Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencipta Pencetus untuk Mengemas kini Lajur dalam Jadual Lain Berdasarkan Operasi INSERT?

Bagaimana untuk Mencipta Pencetus untuk Mengemas kini Lajur dalam Jadual Lain Berdasarkan Operasi INSERT?

Barbara Streisand
Barbara Streisandasal
2024-11-24 11:17:13927semak imbas

How to Create a Trigger to Update a Column in Another Table Based on an INSERT Operation?

Pencetus untuk Kemas Kini Lajur Jadual Lain

Dalam pangkalan data anda, anda mempunyai tiga jadual: BookingRequest, status dan OccupiedRoom. Anda ingin mencipta pencetus yang menukar lajur status dalam jadual BookingRequest kepada '1' apabila permintaan dengan ID yang sama ditambahkan pada jadual OccupiedRoom.

Anda pernah mencuba pencetus berikut:

create trigger occupy_trig after insert on OccupiedRoom 
for each row
begin
  if BookingRequest.idRequest= NEW.idRequest
   then
       update BookingRequest
       set status = '1';
       where idRequest = NEW.idRequest;

    end if;
END;

Namun, ia tidak berjaya. Berikut ialah versi diubah suai yang sepatutnya berfungsi:

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 ;

Penjelasan:

  • Pencetus ditakrifkan selepas operasi sisipan pada jadual OccupiedRoom.
  • Pembolehubah setempat @id_exists diperkenalkan untuk menyemak sama ada ID yang meminta wujud dalam BookingRequest jadual.
  • Subkueri digunakan untuk menentukan sama ada entri dengan ID yang sepadan sudah wujud dalam jadual BookingRequest.
  • Jika ID wujud (@id_exists = 1), jadual BookingRequest dikemas kini dengan menetapkan status = '1' di mana idRequest sepadan dengan ID entri baharu dalam OccupiedRoom.
  • Ingat untuk melaraskan jadual nama dan kemungkinan skema atau perbezaan nama medan sewajarnya.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Pencetus untuk Mengemas kini Lajur dalam Jadual Lain Berdasarkan Operasi INSERT?. 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