Il y a une technique en une seule instruction avec RETURNING.
INSERT INTO ... VALUES(...) RETURNING id INTO variable;
Sinon dans le bout de code montré, on ne voit pas de return true;
Peut-être est-ce un oubli.
Tu peux utiliser RAISE NOTICE 'message' pour t'assurer que le contrôle passe bien dans le IF.. IS NULL. A vue de nez si l'id est bien défini en SERIAL je dirais bien qu'il n'y passe pas. A moins que tu aies aussi une variable qui s'appelle id dans ta fonction auquel cas l'interpréteur plpgsql prendrait la valeur de cette variable et non pas celle de la colonne.
Partager