Saya bertanya-tanya apakah mungkin untuk memperbarui definisi pemicu di MySQL. Sebagai contoh, saya memiliki pemicu T dan saya ingin menambahkan beberapa fungsi baru ke dalamnya.
Asumsi saya adalah bahwa saya harus menjatuhkan dan membuatnya kembali.
Apa praktik terbaik dalam administrasi basis data untuk skenario seperti itu?
Jawaban:
Kedengarannya seperti Anda bertanya apakah mungkin untuk mengubah pemicu dalam operasi atom, di mana, jika definisi baru gagal, Anda tidak kehilangan yang lama ... mirip dengan
CREATE OR REPLACE VIEW
, yang menggantikan definisi tampilan jika definisi baru valid, tetapi biarkan yang lama ada di tempatnya, jika Anda tidak bisa menggantinya.Sayangnya, tidak ada
ALTER TRIGGER
atauCREATE OR REPLACE TRIGGER
di MySQL.Saya menyarankan bahwa praktik terbaik adalah mengunci meja tempat pemicunya tinggal, jadi tidak ada baris yang terpengaruh dengan pemicu yang tidak ada. Menjatuhkan dan menambahkan pemicu saat meja dikunci diizinkan.
Pembaruan: MariaDB, dalam versi 10.1.4, menambahkan dukungan
CREATE OR REPLACE TRIGGER
pada pengganti drop-in untuk MySQL.https://mariadb.com/kb/en/mariadb/create-trigger/
Oracle Oracle hingga 5.7 masih mengandalkan solusi di atas.
sumber