Maison > base de données > tutoriel mysql > Comment créer un déclencheur pour mettre à jour une colonne dans une autre table basée sur une opération INSERT ?

Comment créer un déclencheur pour mettre à jour une colonne dans une autre table basée sur une opération INSERT ?

Barbara Streisand
Libérer: 2024-11-24 11:17:13
original
990 Les gens l'ont consulté

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

Déclencheur pour mettre à jour la colonne d'une autre table

Dans votre base de données, vous avez trois tables : BookingRequest, status et OccupiedRoom. Vous souhaitez créer un déclencheur qui modifie la colonne d'état de la table BookingRequest à « 1 » chaque fois qu'une demande avec le même ID est ajoutée à la table OccupiedRoom.

Vous avez déjà tenté le déclencheur suivant :

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

Cependant, cela n’a pas abouti. Voici une version modifiée qui devrait fonctionner :

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

Explication :

  • Le déclencheur est défini après une opération d'insertion sur la table OccupiedRoom.
  • Une variable locale @id_exists est introduite pour vérifier si l'ID demandeur existe dans le BookingRequest table.
  • Une sous-requête est utilisée pour déterminer si une entrée avec l'ID correspondant existe déjà dans la table BookingRequest.
  • Si l'ID existe (@id_exists = 1), la table BookingRequest est mise à jour en définissant status = '1' où idRequest correspond à l'ID de la nouvelle entrée dans OccupiedRoom.
  • N'oubliez pas d'ajuster les noms de table et leur potentiel différences de schéma ou de nom de champ en conséquence.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal