Bonjour

Je souhaite créer un trigger dans une table "Y" empêchant l'insertion lorsqu'une valeur est supérieur à la référence d'une table "X"

Problème

Dans une table 'palier', j'ai une colonne 'nb_porte' qui détermine le nombre de pièce accessible depuis ce palier.
Dans une table 'pièce', j'ai une colonne 'porte' qui identifie le local.

Le trigger que je souhaite mettre en place doit empêcher l'insertion d'un numéro de porte (dans la table 'pièce') lorsque ce n° est supérieur au 'nb_porte' autorisé.

Parmi mes multiples tentatives, il y a

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
CREATE TRIGGER `Controle_porte` BEFORE INSERT ON `room` FOR EACH ROW
BEGIN
    SELECT nb_room FROM palier AS P
    JOIN room AS Ro
    ON (Ro.ref=P.idPal);
		IF new.door > nb_door
		THEN SET MESSAGE_TEXT = 'Limite porte atteinte';
		END IF;
END
Questions
  1. Y a-t-il une âme compétente pour m'aiguiller sur cette réalisation ?
  2. Peut-on placer nos jointures dans un trigger ?
  3. Puisque le trigger agit à un instant 'T' sur les valeurs en cours, fera-t-il la liaison sur les bonnes valeurs liées d'une autre table ? (dans la table 'palier', j'ai plusieurs 'nb_porte')



NB 1 : je suis conscient qu'il serait plus simple de mettre cette sécurité dans le code .php lié à cette Bdd.
Mais c'est bien un trigger que je souhaite mettre en place.
NB 2 : cela fait 2 jours que je parcours nombre de forum, tuto et autre doc... sans trouver satisfaction :/