Solo per espandere un po 'la risposta di @Michael, ma mentre fai riferimento a uno schema comune è la strada da percorrere, puoi creare "alias" nei database locali per renderlo un po' più facile da gestire.
Ad esempio, sto lavorando con un derivato MySQL che non ha ancora la UUID_TO_BIN
funzione di MySQL 8 , quindi ho creato il mio e l'ho memorizzato in un database appositamente per cose globali che ho chiamato common
. Quindi per fare riferimento a questa funzione ora devo usare common.UUID_TO_BIN
in tutte le mie query e procedure memorizzate. Non è un grosso problema, ma non è così facile come semplicemente chiamare UUID_TO_BIN
(come farei se la funzione nativa fosse disponibile).
Quindi quello che ho fatto è stato anche aggiunto un "alias" a ciascuno dei miei database in questo modo:
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);
In questo modo, in ogni database aggiungo questo "alias" che ora posso semplicemente chiamare UUID_TO_BIN(some_uuid, TRUE)
senza alcun nome di database aggiunto, ma senza il fastidio di duplicare l'intera funzione, cioè se per qualche motivo avessi bisogno di cambiare o ottimizzare la funzione farlo in un unico posto ( common.UUID_TO_BIN
) anziché aggiornare ogni singolo database.
Se successivamente eseguo l'aggiornamento a un database con un nativo, UUID_TO_BIN
posso anche semplicemente rimuovere tutte le mie funzioni "alias" e tutte le mie query e procedure esistenti ora lo useranno senza ulteriori modifiche. O se la funzione globale dovesse essere spostata in un database diverso, devo solo aggiornare i miei alias, piuttosto che ogni singola delle mie query che la utilizzano.
Non sono sicuro di quanto sia intelligente MySQL quando si tratta di ottimizzare una funzione che chiama semplicemente un'altra funzione, quindi potrebbe esserci un leggero costo associato al reindirizzamento in questo modo, ma penso che valga la pena per la gestione semplificata, mentre mantenendo solo una singola definizione "globale".