Bonjour à tout le monde.
Alors voilà, étant novice dans le monde des triggers, je butte sur un problème...
J'ai deux tables :
Table A :
Table BA1 A2 DATE
1 X;Y;Z 29/03/2023
2 K;L;M 01/04/2023
B1 B2 B3 B4
1 X true
2 Y true
3 Z true
4 K false
5 L false
6 M false
L'idée, ce que le champ A2 contient une liste d'identifiants séparés par ;
Le champ DATE est mis à jour, c'est de cette mise à jour que le trigger doit se déclencher (si DATE > cast(now() as date) )
Une fois le trigger déclenché, c'est le champ B4 qui doit être modifié.
Si la condition au-dessus est vérifié, alors le champ (booléen) passe à true, sinon ça reste par défaut en false.
Et, puisque sinon c'est pas assez tordu, les identifiants du champ A2 ont une référence tantôt dans le champ B2 tantôt dans le champ B3.
J'ai fait un trigger, qui ne semble pas poser de problème de code en soit (j'arrive à le sauvegarder sans que pgadmin me saute dessus), mais quand je vais les mises à jour, rien ne se passe...
Il est déclaré en AFTER, FOR EACH ROW, et autant en INSERT qu'en UPDATE.
Est-ce que quelqu'un aurait une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 BEGIN IF NEW.DATE > cast(now() as date) THEN UPDATE B SET NEW.B4 = 'true' where B2 in (select regexp_split_to_table(A2,';')from A INNER JOIN B on A2 = B2) or B3 in (select regexp_split_to_table(A2,';')from A INNER JOIN B on A2 = B3); END IF ; RETURN NEW; END ;
Merci d'avance smile
Partager