Den korta versionen här är att använda okvalificerad lastval är en dålig idé. Triggers, regler etc kan orsaka problem.
Du bör undvika lastval helt. Använd:
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;
där id bör efter namnet på den genererade nyckelkolumnen.
Detta tillvägagångssätt kommer att hantera infogningar med flera värden och INSERT INTO ... SELECT ... korrekt och kommer inte att ha problem med utlösare som rör vid sekvenser.
Om du måste använda en funktionsanropsbaserad metod, använd åtminstone currval('tablename_id_seq') (passar lämpligt sekvensnamn) istället för lastval .