Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah Pemicu MySQL Boleh Digunakan untuk Mengemas kini Jadual Berkaitan Selepas Memasukkan atau Kemas Kini Acara?

Bagaimanakah Pemicu MySQL Boleh Digunakan untuk Mengemas kini Jadual Berkaitan Selepas Memasukkan atau Kemas Kini Acara?

Patricia Arquette
Patricia Arquetteasal
2024-11-13 04:18:02375semak imbas

How Can MySQL Triggers Be Used to Update a Related Table Upon Insert or Update Events?

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:

  • Mengemas kini "ext_words_count.count" apabila "ext_words.word" dikemas kini.
  • Memasukkan rekod ke dalam "ext_words_count" jika "ext_words.word" tidak wujud, menetapkan "count " hingga 1.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn