Rumah > pangkalan data > tutorial mysql > 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
Lepaskan: 2024-11-13 04:18:02
asal
454 orang telah melayarinya

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;
Salin selepas log masuk

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)
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan