Den korte version her er at bruge ukvalificeret lastval er en dårlig idé. Triggere, regler osv. kan give problemer.
Du bør undgå lastval helt. Brug:
BEGIN;
INSERT INTO "users" ("email", "first_name", "last_name", "password", "objectstate_id", "activate_rid")
VALUES ('example@sqldat.com', 'Xpress', 'Care', 'f9fecdd84ee071806423adf30d6d6ff04e1a0a2c6688f2c057ddbab1d6b55d02', 4, 'EMQHTMMvViAB5BdYj0E6')
RETURNING id;
hvor id skal ved navnet på den genererede nøglekolonne.
Denne tilgang vil håndtere inserts med flere værdier og INSERT INTO ... SELECT ... korrekt og vil ikke have problemer med triggere, der berører sekvenser.
Hvis du skal bruge en funktionsopkaldsbaseret tilgang, skal du i det mindste bruge currval('tablename_id_seq') (passer det passende sekvensnavn) i stedet for lastval .