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
Libérer: 2024-11-24 09:22:14
original
301 Les gens l'ont consulté

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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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)
Copier après la connexion

);

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

idStatus INT NOT NULL AUTO_INCREMENT,
nameStatus ENUM('underConsideration', 'approved', 'rejected'),
PRIMARY KEY (idStatus)
Copier après la connexion

);

-- 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)
Copier après la connexion

);

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 ;
Copier après la connexion

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 de ce site Web
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
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal