Maison >base de données >tutoriel mysql >Comment mettre à jour le statut d'une demande de réservation après son insertion dans OccupiedRoom à l'aide d'un déclencheur MySQL ?

Comment mettre à jour le statut d'une demande de réservation après son insertion dans OccupiedRoom à l'aide d'un déclencheur MySQL ?

DDD
DDDoriginal
2024-11-24 09:22:14283parcourir

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

MySQL après l'insertion du déclencheur met à jour la colonne d'une autre table

Lors de la création d'une demande de réservation, il est nécessaire de mettre à jour le statut dans la table BookingRequest en fonction de l'insertion d'une requête correspondante dans la table OccupiedRoom. Pour y parvenir, un déclencheur est nécessaire.

Pour commencer, définissez les tables suivantes :

<br> -- Table BookingRequest :<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)

);

-- Table d'état :
CRÉER Statut de la TABLE (

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

);

-- Table OccupiedRoom :
CREATE TABLE 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)

);

Maintenant, écrivons le 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 ;

Voici comment cela fonctionne :

  1. Lors de l'insertion d'un enregistrement dans la table OccupiedRoom, le déclencheur est exécuté.
  2. Il vérifie si une correspondance enregistrement existe dans la table BookingRequest via une sous-requête.
  3. Si une correspondance est trouvée, la colonne statut dans la Le tableau BookingRequest est mis à jour à « 1 ».

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn