Trigger : after insert on avec clé étrangère
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.
Code:
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 |
J'ai essayé ceci aussi mais toujours sans succès
Code:
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:
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.