bonjour,
J'ai actuellement un petit problème par rapport à un trigger.
ma table:
un ligand pouvant avoir de multiples (n) synonymes, mais un seul nom officiel, le booléen sera donc pour un même id_lig : (n-1) fois à 0 et 1 fois à 1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE TABLE IF NOT EXISTS `ligand_nom` ( `id_lig` int(11) NOT NULL, `nom` varchar(250) NOT NULL, `officiel` BOOL NOT NULL, PRIMARY KEY (`id_lig`, `nom`), FOREIGN KEY (`id_lig`) REFERENCES ligands(`id`) ) ENGINE=InnoDB;
J'ai donc crée un trigger, pour éviter l'ajout de plus d'un nom considéré comme officiel :
malheureusement, ça ne fonctionne pas, je peux toujours insérer des données avec le même id_lig et officiel à 1...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 DELIMITER // CREATE TRIGGER `trig_add_nom_lig` BEFORE INSERT ON `ligand_nom` FOR EACH ROW IF (NEW.officiel>=1) THEN DECLARE COMPTEUR_OFF INTEGER; SELECT count(id_lig) INTO COMPTEUR_OFF FROM ligand_nom WHERE id_lig=NEW.id_lig AND officiel=NEW.officiel; IF (COMPTEUR_OFF>=1) THEN SET NEW.officiel=0; END IF; END IF; END;// DELIMITER ;
Si quelqu'un a une petite idée du pourquoi du comment ... ça m'aiderai beaucoup
Merci d'avance.
Partager