Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich einen Trigger zum Aktualisieren einer Spalte in einer anderen Tabelle basierend auf einer INSERT-Operation?

Wie erstelle ich einen Trigger zum Aktualisieren einer Spalte in einer anderen Tabelle basierend auf einer INSERT-Operation?

Barbara Streisand
Barbara StreisandOriginal
2024-11-24 11:17:13985Durchsuche

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

Trigger zum Aktualisieren der Spalte einer anderen Tabelle

In Ihrer Datenbank gibt es drei Tabellen: BookingRequest, Status und OccupiedRoom. Sie möchten einen Trigger erstellen, der die Statusspalte in der BookingRequest-Tabelle auf „1“ ändert, wenn eine Anfrage mit derselben ID zur OccupiedRoom-Tabelle hinzugefügt wird.

Sie haben zuvor den folgenden Trigger versucht:

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;

Es war jedoch erfolglos. Hier ist eine modifizierte Version, die funktionieren sollte:

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 ;

Erklärung:

  • Der Trigger wird nach einem Einfügevorgang für die OccupiedRoom-Tabelle definiert.
  • Eine lokale Variable @id_exists wird eingeführt, um zu prüfen, ob die anfragende ID in der BookingRequest vorhanden ist Tabelle.
  • Eine Unterabfrage wird verwendet, um zu ermitteln, ob ein Eintrag mit der passenden ID bereits in der BookingRequest-Tabelle vorhanden ist.
  • Wenn die ID vorhanden ist (@id_exists = 1), wird die BookingRequest-Tabelle aktualisiert indem Sie status = '1' setzen, wobei idRequest mit der ID des neuen Eintrags in OccupiedRoom übereinstimmt.
  • Denken Sie daran, Tabellennamen und potenzielle Schemata anzupassen Feldnamenunterschiede entsprechend.

Das obige ist der detaillierte Inhalt vonWie erstelle ich einen Trigger zum Aktualisieren einer Spalte in einer anderen Tabelle basierend auf einer INSERT-Operation?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn