Bonjour à tous,
Je bloque sur la création d'un trigger qui devrait utiliser les valeurs de 2 tables qui sont reliées.
Table 1 : llx_contrat as c (rowid, ref, fk_soc)
Table 2 : llx_societe as s (rowid, nom)
Les 2 tables sont reliées de cette façon: c.fk_soc = s.rowid
Mon trigger devrait insérer (après un insert dans la table llx_contrat) les données suivantes dans une 3ème table: llx_custom_reservation_def as r (rowid, tiers, ref)
r.rowid = c.rowid
r.tiers = s.nom
r.ref = c.ref
Voici ce que j'ai essayé mais qui ne fonctionne pas.
J'ai essayé ceci aussi mais toujours sans succès
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 CREATE TRIGGER `after_insert_contrat` AFTER INSERT ON `llx_contrat` FOR EACH ROW BEGIN DECLARE cd varchar; SET cd = (select s.nom from `llx_contrat` as c LEFT JOIN `llx_societe` as s ON s.rowid = c.fk_soc); INSERT INTO llx_custom_reservation_def (rowid, tiers, ref) VALUES (NEW.rowid, cd, NEW.ref) END
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 CREATE TRIGGER `before_insert_contrat` BEFORE INSERT ON `llx_contrat` FOR EACH ROW BEGIN INSERT INTO llx_custom_reservation_def (rowid, ref, tiers) SELECT NEW.rowid, NEW.ref, s.nom FROM llx_societe WHERE s.rowid = NEW.fk_soc; END
Ce trigger-ci fonctionne mais c'est la clé du fk_soc qui s'affiche dans mon champ tiers de la table llx_custom_reservation_def. Or j'aimerais que ce soit le nom de la société qui soit insérée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE TRIGGER `after_insert_contrat` AFTER INSERT ON `llx_contrat` FOR EACH ROW INSERT INTO llx_custom_reservation_def (rowid, tiers, ref) VALUES (NEW.rowid, NEW.fk_soc, NEW.ref)
Quelqu'un pourrait me dire quelle est l'erreur? Je suppose que je ne peut pas procéder comme cela mais je ne parviens pas à comprendre comment je peux faire.
Merci par avance pour votre aide.
Partager