Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mencipta Trigger MySQL untuk Mengemas kini Lajur Jadual Berbeza Selepas Sisipan?

Bagaimana untuk Mencipta Trigger MySQL untuk Mengemas kini Lajur Jadual Berbeza Selepas Sisipan?

Patricia Arquette
Patricia Arquetteasal
2024-11-24 04:12:11243semak imbas

How to Create a MySQL Trigger to Update a Different Table's Column After an Insert?

MySQL Trigger untuk Mengemas kini Lajur Jadual Berbeza selepas Sisipan

Soalan ini melibatkan penciptaan pencetus MySQL yang mengemas kini lajur status dalam jadual BookingRequest berdasarkan pada sisipan baris ke dalam jadual OccupiedRoom.

Awal kod pencetus cuba mengemas kini terus jadual BookingRequest menggunakan perbandingan antara BookingRequest.idRequest dan NEW.idRequest. Walau bagaimanapun, pendekatan ini tidak berjaya.

Untuk menyelesaikan isu ini dan mencipta pencetus berfungsi, kod di bawah harus digunakan:

DELIMITER $$
CREATE TRIGGER occupy_trig
AFTER INSERT ON `OccupiedRoom` FOR EACH ROW
begin
       DECLARE id_exists Boolean;
       -- Check BookingRequest table
       SELECT 1
       INTO @id_exists
       FROM BookingRequest
       WHERE BookingRequest.idRequest= NEW.idRequest;

       IF @id_exists = 1
       THEN
           UPDATE BookingRequest
           SET status = '1'
           WHERE idRequest = NEW.idRequest;
        END IF;
END;
$$
DELIMITER ;

Pencetus ini menggunakan pembolehubah @id_exists untuk menyemak sama ada idRequest daripada jadual OccupiedRoom wujud dalam jadual BookingRequest. Jika ya, ia menetapkan lajur status dalam jadual BookingRequest kepada '1'.

Dengan menggunakan ruang letak BARU dalam pencetus, perbandingan kini dilakukan dengan betul antara idRequest baris yang disisipkan dan idRequest yang sepadan dalam Jadual Permintaan Tempahan.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Trigger MySQL untuk Mengemas kini Lajur Jadual Berbeza Selepas Sisipan?. 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