Solo para ampliar un poco la respuesta de @Michael, pero si bien hacer referencia a un esquema común es el camino a seguir, puede crear "alias" en las bases de datos locales para que sea un poco más fácil de administrar.
Por ejemplo, estoy trabajando con un derivado de MySQL que aún no tiene la UUID_TO_BIN
función de MySQL 8 , así que he creado el mío y lo he almacenado en una base de datos específicamente para cosas globales que he llamado common
. Entonces, para hacer referencia a esta función, ahora tengo que usarla common.UUID_TO_BIN
en todas mis consultas y procedimientos almacenados. No es un gran problema, pero no es tan fácil como simplemente llamar UUID_TO_BIN
(como lo haría si la función nativa estuviera disponible).
Entonces, lo que he hecho también ha agregado un "alias" a cada una de mis bases de datos de esta manera:
CREATE FUNCTION `UUID_TO_BIN`(a_uuid CHAR(36), a_reorder BOOL) RETURNS binary(16)
DETERMINISTIC
RETURN `common`.UUID_TO_BIN(a_uuid, a_reorder);
De esta manera, en cada base de datos agrego este "alias" ahora puedo simplemente llamar UUID_TO_BIN(some_uuid, TRUE)
sin agregar ningún nombre de base de datos, pero sin la molestia de duplicar toda la función, es decir, si necesito cambiar u optimizar la función por alguna razón, solo tiene que hacerlo en un solo lugar ( common.UUID_TO_BIN
) en lugar de actualizar cada base de datos.
Si luego actualizo a una base de datos con un nativo UUID_TO_BIN
, también puedo simplemente eliminar todas mis funciones de "alias" y todas mis consultas y procedimientos existentes ahora lo usarán sin ninguna otra modificación. O si la función global se moviera a una base de datos diferente, solo tengo que actualizar mis alias, en lugar de cada una de mis consultas que la usan.
No estoy seguro de cuán inteligente es MySQL cuando se trata de optimizar una función que simplemente llama a otra función, por lo que puede haber un pequeño costo asociado con la redirección de esta manera, pero creo que vale la pena por la administración simplificada, mientras conservando una sola definición "global".