Bonjour,
Je suis entrain de faire un trigger et j'ai un petit problème.
En php je fais un insert dans une table et mon trigger consiste à vérifier, si dans cette table, il y a déjà une ligne qui existe (en fonction des id) on fait un update, sinon on fait l'insert comme prévu :
Code SQL : 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
20
21
22
23 CREATE FUNCTION f_consultation() RETURNS trigger AS $body$ DECLARE unId INTEGER; BEGIN SELECT * FROM CONSULTATION WHERE idpersonne = NEW.idpersonne AND idtablature = NEW.idtablature INTO unId; IF unId=NULL THEN RETURN NULL; ELSE UPDATE consultation SET quantite = quantite+1 WHERE idpersonne = NEW.idpersonne AND idtablature = NEW.idtablature; RETURN NULL; END IF; END; $body$ language plpgsql; CREATE TRIGGER t_consultation BEFORE INSERT ON consultation FOR EACH ROW EXECUTE PROCEDURE f_consultation();
Cela marche très bien pour l'update, mais le problème c'est que l'insert ne se fait jamais. Comment faire pour que l'insert se produise dans le cas ou je n'ai pas de lignes qui correspond a mon select ?
En gros dans le if=NULL il faudrait rien faire et juste exécuter la requête d'insert comme prévu.
Merci d'avance.
John.
Partager