MySQL Pencetus untuk Manipulasi Data yang Cekap dalam Senario Sisipan/Kemas Kini
Pertimbangkan dua jadual: ext_words dan ext_words_count. Matlamatnya ialah untuk mencipta pencetus yang mengekalkan kiraan perkataan dalam ext_words_count setiap kali jadual ext_words dikemas kini.
Untuk tugasan ini, anda pada mulanya cuba menggunakan satu pencetus:
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 tidak mengambil kira kes di mana perkataan yang dikemas kini tidak wujud dalam ext_words_count. Untuk menangani perkara ini, anda mempertimbangkan untuk menggunakan pencetus berasingan untuk operasi sisipan dan kemas kini:
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 ; DELIMITER $$ CREATE TRIGGER update_word 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 ;
Walaupun pencetus sisipan berfungsi dengan jayanya, pencetus kemas kini masih gagal meningkatkan kiraan.
Akhirnya, anda menemui penyelesaian alternatif menggunakan pernyataan bersyarat dalam 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 menyemak sama ada perkataan wujud dalam ext_words_count. Jika tidak, ia memasukkan perkataan ke dalam jadual. Jika tidak, ia menambah bilangan perkataan yang sepadan. Dengan memanfaatkan pernyataan bersyarat, anda kini boleh mengekalkan kiraan perkataan dengan cekap menggunakan satu pencetus.
Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Kiraan Perkataan dengan Cekap Menggunakan Pencetus MySQL dalam Senario Sisipan/Kemas kini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!