Triggers, tester si NEW ou OLD est assigné
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:
Code:
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 |
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:
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; |
La question:
Comment puis-je savoir si NEW et OLD sont assignés ou non ?