Menggunakan Pencetus MySQL untuk Mengendalikan Peristiwa Sisipan dan Kemas Kini
Untuk menangani keperluan untuk mengemas kini jadual yang berkaitan ("ext_words_count") semasa memasukkan atau kemas kini jadual utama ("ext_words"), pencetus MySQL boleh digunakan.
Memahami Masalah
Objektifnya adalah untuk mencipta pencetus yang melakukan perkara berikut:
Percubaan Terdahulu dan Pernyataan Bersyarat
Pencetus yang disediakan cuba mengemas kini "word_count" menggunakan:
UPDATE ext_words_count SET word_count = word_count + 1 WHERE word = NEW.word;
Walau bagaimanapun, pertanyaan ini hanya mengemas kini rekod sedia ada dan gagal mengendalikan sisipan.
Untuk menangani perkara ini, pernyataan bersyarat boleh digunakan dalam pencetus. Sebagai contoh, semakan berikut untuk kewujudan rekod dalam "ext_words_count":
IF NOT EXISTS (SELECT 1 FROM ext_words_count WHERE word = NEW.word)
Berdasarkan syarat ini, pencetus boleh melaksanakan sama ada operasi sisipan atau kemas kini seperti yang diperlukan.
Pencetus Tunggal untuk Kedua-dua Sisipan dan Kemas Kini
Menggunakan pernyataan bersyarat, satu pencetus boleh dibuat untuk mengendalikan kedua-dua acara sisipan dan kemas kini:
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
Memasukkan dan Mengemas kini
Kini, selepas memasukkan atau mengemas kini "ext_words", pencetus ini memastikan "ext_words_count" dikemas kini atau dimasukkan seperti yang diperlukan. Ujian mengesahkan bahawa kedua-dua senario dikendalikan dengan betul.
Atas ialah kandungan terperinci Bagaimanakah Pemicu MySQL Boleh Digunakan untuk Mengemas kini Jadual Berkaitan Selepas Memasukkan atau Kemas Kini Acara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!