Heim  >  Artikel  >  Datenbank  >  Wie aktualisiere ich den Status einer Buchungsanfrage nach dem Einfügen in OccupiedRoom mithilfe eines MySQL-Triggers?

Wie aktualisiere ich den Status einer Buchungsanfrage nach dem Einfügen in OccupiedRoom mithilfe eines MySQL-Triggers?

DDD
DDDOriginal
2024-11-24 09:22:14226Durchsuche

How to Update a BookingRequest Status After Inserting into OccupiedRoom Using a MySQL Trigger?

MySQL aktualisiert nach dem Einfügen-Trigger die Spalte einer anderen Tabelle

Beim Erstellen einer Buchungsanfrage ist es notwendig, den Status in der BookingRequest-Tabelle basierend auf zu aktualisieren das Einfügen einer entsprechenden Anfrage in die OccupiedRoom-Tabelle. Um dies zu erreichen, ist ein Trigger erforderlich.

Definieren Sie zunächst die folgenden Tabellen:

<br> -- BookingRequest-Tabelle:<br> CREATE TABLE BookingRequest (</p>
<pre class="brush:php;toolbar:false">idRequest INT NOT NULL AUTO_INCREMENT,
roomClass INT NOT NULL,
inDate DATE NOT NULL,
outDate DATE NOT NULL,
numOfBeds INT NOT NULL,
status INT NOT NULL,
idUser INT NOT NULL,
PRIMARY KEY (idRequest),
INDEX idx_status (status),
INDEX idx_user (idUser)

);

-- Statustabelle:
TABELLE ERSTELLEN Status (

idStatus INT NOT NULL AUTO_INCREMENT,
nameStatus ENUM('underConsideration', 'approved', 'rejected'),
PRIMARY KEY (idStatus)

);

-- OccupiedRoom-Tabelle:
TABELLE ERSTELLEN OccupiedRoom (

idOccupation INT NOT NULL AUTO_INCREMENT,
idRoom INT NOT NULL,
idRequest INT NOT NULL,
PRIMARY KEY (idOccupation),
INDEX idx_id_room (idRoom),
INDEX idx_id_request (idRequest)

);

Jetzt schreiben wir das Trigger:

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 ;

So funktioniert es:

  1. Beim Einfügen eines Datensatzes in die OccupiedRoom-Tabelle wird der Trigger ausgeführt.
  2. Er prüft, ob eine Übereinstimmung vorliegt Der Datensatz ist über eine Unterabfrage in der BookingRequest-Tabelle vorhanden.
  3. Wenn eine Übereinstimmung gefunden wird, wird die Statusspalte in der Die BookingRequest-Tabelle wird auf „1“ aktualisiert.

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich den Status einer Buchungsanfrage nach dem Einfügen in OccupiedRoom mithilfe eines MySQL-Triggers?. 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