Salut à toutes et à tous !
Je débute avec Postgre, et suis en train d'apprendre son système de trigger.
Un peu opaque à première vue, très différent de Sybase et SQLite, mais j'ai fini par saisir l'idée.
Seule chose: je voudrais éviter la duplication de code, créant une et une seule fonction pour un trigger qui gère à la fois l'insert, l'update et le delete.
Dans cette fonction, j'ai besoin de NEW et OLD, afin de rectifier certaines valeurs dans une autre table.
Mais voila, très vite Postgre me rappelle à l'ordre:
Voici le code en cause (bon, c'est un peu bidon bien sur, puisque je suis tjs en train d'apprendre le système )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ERROR: record "new" is not assigned yet DETAIL: The tuple structure of a not-yet-assigned record is indeterminate. CONTEXT: PL/pgSQL function "update_accounts" line 2 at IF
La question:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE OR REPLACE FUNCTION update_accounts()RETURNS trigger AS $$ BEGIN IF NEW IS NULL THEN INSERT INTO Account(accountName, balance) VALUES ('Haha', '90.0'); END IF; RETURN NEW; END; $$ LANGUAGE plpgsql;
Comment puis-je savoir si NEW et OLD sont assignés ou non ?
Partager