Maison >base de données >tutoriel mysql >Comment mettre à jour correctement une colonne de table dans MySQL à l'aide d'un déclencheur après insertion ?

Comment mettre à jour correctement une colonne de table dans MySQL à l'aide d'un déclencheur après insertion ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-26 07:23:11957parcourir

How to Correctly Update a Table Column in MySQL Using an After Insert Trigger?

MySQL après l'insertion d'un déclencheur pour mettre à jour la colonne d'une autre table

Cette requête tente de créer un déclencheur dans MySQL qui met à jour une colonne dans la table BookingRequest lorsqu'une ligne est insérée dans la table OccupiedRoom. Cependant, le déclencheur fourni ne fonctionne pas comme prévu.

Pour résoudre ce problème, voici une version corrigée du déclencheur :

DELIMITER $$
CREATE TRIGGER occup_trig
AFTER INSÉRER SUR LA Pièce Occupée POUR CHACUN 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;

$$ DÉLIMITEUR ; **Détails du déclencheur :** * Le déclencheur est défini à l'aide de la clause `AFTER INSERT`, ce qui signifie qu'il s'exécute après l'insertion d'une ligne dans la table `OccupiedRoom`. * Le déclencheur utilise une clause `FOR EACH ROW` pour traiter chaque ligne insérée individuellement. * À l'intérieur du corps de la gâchette : * Il déclare une variable booléenne `@id_exists` pour vérifier si le `idRequest` de la ligne `OccupiedRoom` insérée existe dans la table `BookingRequest`. * Il vérifie la table `BookingRequest` pour déterminer si le `idRequest` de la ligne `OccupiedRoom` nouvellement insérée existe. Si c'est le cas, il définit `@id_exists` sur `1`. * Si `@id_exists` est `1`, il met à jour la colonne `status` dans la table `BookingRequest` à '1' où `idRequest` correspond au nouveau `idRequest` de la table `OccupiedRoom`.

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