Hanya untuk memperluas sedikit pada jawaban @ Michael, tetapi sementara referensi skema umum adalah cara untuk pergi, Anda dapat membuat "alias" di database lokal untuk membuat ini sedikit lebih mudah untuk dikelola.
Sebagai contoh, saya bekerja dengan turunan MySQL yang belum memiliki UUID_TO_BIN
fungsi MySQL 8 , jadi saya membuatnya sendiri, dan menyimpannya dalam database khusus untuk hal-hal global yang saya panggil common
. Jadi untuk referensi fungsi ini, saya sekarang harus menggunakan common.UUID_TO_BIN
semua pertanyaan dan prosedur tersimpan saya. Bukan masalah besar, tetapi tidak semudah hanya memanggil UUID_TO_BIN
(seperti yang saya lakukan jika fungsi asli tersedia).
Jadi yang saya lakukan juga menambahkan "alias" ke masing-masing basis data saya seperti:
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);
Dengan cara ini, di setiap basis data saya menambahkan "alias" ini. Saya sekarang dapat dengan mudah memanggil UUID_TO_BIN(some_uuid, TRUE)
tanpa menambahkan nama basis data, tetapi tanpa kerumitan menduplikasi seluruh fungsi, yaitu - jika saya perlu mengubah atau mengoptimalkan fungsi untuk beberapa alasan, saya hanya harus melakukannya di satu tempat ( common.UUID_TO_BIN
) daripada memperbarui setiap basis data tunggal.
Jika nanti saya memutakhirkan ke database dengan yang asli UUID_TO_BIN
saya juga bisa menghapus semua fungsi "alias" saya dan semua pertanyaan dan prosedur saya yang ada sekarang akan menggunakannya tanpa modifikasi lebih lanjut. Atau jika fungsi global dipindahkan ke database yang berbeda, saya hanya perlu memperbarui alias saya, daripada setiap pertanyaan saya yang menggunakannya.
Saya tidak yakin seberapa pintar MySQL dalam hal mengoptimalkan fungsi yang hanya memanggil fungsi lain, jadi mungkin ada sedikit biaya yang terkait dengan mengarahkan ulang dengan cara ini, tapi saya pikir itu layak untuk manajemen yang disederhanakan, sementara hanya mempertahankan satu definisi "global".