Bonjour,
Je débute dans les TRIGGERS et j'ai voulu en concevoir un qui génère un login en utilisant différents champs d'une table (ici: nomCli, idCli, villeCli).
La récupération des champs nomCli et villeCli ne pose pas de problème.
Le problème vient de la récupération de l'idCli, new.idCli est toujours équivalent à 0 lors de l'exécution du TRIGGER, et pourtant dans la table après l'insertion, le champs idCli est bien égale à une valeur non nulle...
Je pense que le problème vient de mon INSERT INTO dans lequel je ne fais pas figurer l'idCli car celui-ci est en auto_increment:
Ca doit être car dans la commande d'insertion le champs idCli est NULL..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 INSERT INTO t_client VALUES ('','nom_du_client',etc...);
Dans le pire des cas j'enleverai l'auto_increment, mais ça m'arrangerait de le garder.
Voici le trigger:
Voici la structure de la table sur laquelle s'effectue le trigger:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE TRIGGER setLoginCli BEFORE INSERT ON t_client FOR EACH ROW SET new.loginCli=(SELECT CONCAT(SUBSTR(new.nomCli,1,3),SUBSTR(new.villeCli,1,3),new.idCli));
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 CREATE TABLE t_client ( -- Clé primaire idCli INT(4) NOT NULL AUTO_INCREMENT, -- Champs nomCli VARCHAR(50) NOT NULL, loginCli VARCHAR(8) NULL, passCli LONGTEXT NOT NULL, rueCli VARCHAR(100) NOT NULL, villeCli VARCHAR(50) NOT NULL, cpCli VARCHAR(5) NOT NULL, telCli VARCHAR(10) NULL, mailCli VARCHAR(100) NULL, -- Clé étrangère statutCli INT(3) NOT NULL, -- Contraintes CONSTRAINT pk_client PRIMARY KEY (idCli), CONSTRAINT fk_client FOREIGN KEY (statutCli) REFERENCES t_statutclient(idStatut) );
Partager