Apenas para expandir um pouco a resposta do @ Michael, mas enquanto referenciar um esquema comum é o caminho a seguir, você pode criar "aliases" nos bancos de dados locais para facilitar um pouco o gerenciamento.
Por exemplo, estou trabalhando com um derivado do MySQL que ainda não possui a UUID_TO_BIN
função do MySQL 8 , então criei o meu e o armazenei em um banco de dados especificamente para coisas globais que chamei common
. Portanto, para fazer referência a essa função, agora tenho que usar common.UUID_TO_BIN
em todas as minhas consultas e procedimentos armazenados. Não é um problema enorme, mas não tão fácil quanto simplesmente chamar UUID_TO_BIN
(como faria se a função nativa estivesse disponível).
Então, o que eu fiz também foi adicionado um "alias" a cada um dos meus bancos de dados da seguinte forma:
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);
Dessa forma, em cada banco de dados que adiciono esse "pseudônimo", agora posso simplesmente chamar UUID_TO_BIN(some_uuid, TRUE)
sem nenhum nome de banco de dados adicionado, mas sem o incômodo de duplicar a função inteira, ou seja, se eu precisar alterar ou otimizar a função por algum motivo, apenas precisa fazer isso em um único lugar ( common.UUID_TO_BIN
) em vez de atualizar todos os bancos de dados.
Se eu atualizar posteriormente para um banco de dados com um nativo UUID_TO_BIN
, também posso simplesmente remover todas as minhas funções de "alias" e todas as minhas consultas e procedimentos existentes agora o usarão sem nenhuma modificação adicional. Ou, se a função global fosse movida para um banco de dados diferente, só preciso atualizar meus aliases, em vez de todas as minhas consultas que a utilizam.
Não sei ao certo quão inteligente é o MySQL quando se trata de otimizar uma função que simplesmente chama outra função; portanto, pode haver um pequeno custo associado ao redirecioná-lo dessa maneira, mas acho que vale a pena pelo gerenciamento simplificado. mantendo apenas uma única definição "global".