MySQL Pencetus untuk Pada Sisipan/Kemas Kini Acara
Senario:
Pertimbangkan dua jadual, ext_words dan ext_words_count, tempat ext_words menyimpan perkataan dan ext_words_count menjejaki kiraan setiap perkataan dalam ext_words. Matlamatnya adalah untuk mencipta pencetus yang:
Percubaan Awal:
Pencetus awal yang dicadangkan, yang hanya mengendalikan kemas kini, adalah seperti berikut:
DELIMITER $$ CREATE TRIGGER update_count AFTER UPDATE ON ext_words FOR EACH ROW BEGIN UPDATE ext_words_count SET word_count = word_count + 1 WHERE word = NEW.word; END; $$ DELIMITER ;
Walau bagaimanapun , pencetus ini hanya mengemas kini perkataan sedia ada dalam ext_words_count dan gagal memasukkan baharu perkataan.
Pendekatan Kemas Kini dengan Pernyataan Bersyarat:
Menggunakan pernyataan bersyarat, adalah mungkin untuk menggabungkan operasi sisipan dan kemas kini menjadi satu pencetus:
DELIMITER $$ CREATE TRIGGER update_count AFTER INSERT ON ext_words FOR EACH ROW BEGIN IF NOT EXISTS (SELECT 1 FROM ext_words_count WHERE word = NEW.word) THEN INSERT INTO ext_words_count (word) VALUES (NEW.word); ELSE UPDATE ext_words_count SET word_count = word_count + 1 WHERE word = NEW.word; END IF; END $$ DELIMITER ;
Pencetus ini menilai sama ada perkataan itu sudah wujud dalam ext_words_count. Jika tidak, pencetus memasukkan perkataan; jika tidak, ia mengemas kini kiraan. Pencetus dilaksanakan selepas setiap operasi sisipan pada jadual ext_words.
Pertimbangan Tambahan:
Untuk mengendalikan sisipan, pencetus berasingan untuk operasi INSERT juga disyorkan:
DELIMITER $$ CREATE TRIGGER insert_word AFTER INSERT ON ext_words FOR EACH ROW BEGIN INSERT IGNORE INTO ext_words_count (word) VALUES (NEW.word); END; $$ DELIMITER ;
Pencetus ini hanya memasukkan perkataan ke dalam ext_words_count tanpa mempertimbangkan sama ada ia sudah wujud. Pernyataan INSERT IGNORE memastikan sisipan pendua diabaikan.
Kesimpulan:
Dengan menggabungkan pencetus sisipan dan kemas kini atau menggunakan pencetus tunggal dengan pernyataan bersyarat, adalah mungkin untuk melaksanakan fungsi yang diingini untuk menjejaki bilangan perkataan dalam jadual MySQL.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pencetus MySQL untuk Mengemas kini Kiraan Perkataan dalam Dua Jadual pada Acara Sisipan dan Kemas Kini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!