Кратката версия тук е използването на неквалифициран lastval
е лоша идея. Задействания, правила и т.н. могат да причинят проблеми.
Трябва да избягвате lastval
изцяло. Използвайте:
BEGIN;
INSERT INTO "users" ("email", "first_name", "last_name", "password", "objectstate_id", "activate_rid")
VALUES ('[email protected]', 'Xpress', 'Care', 'f9fecdd84ee071806423adf30d6d6ff04e1a0a2c6688f2c057ddbab1d6b55d02', 4, 'EMQHTMMvViAB5BdYj0E6')
RETURNING id;
където id
трябва по името на генерираната ключова колона.
Този подход ще обработва многостойностни вмъквания и INSERT INTO ... SELECT ...
правилно и няма да има проблеми със задействания, докосващи последователности.
Ако трябва да използвате подход, базиран на извикване на функция, използвайте поне currval('tablename_id_seq')
(подаване на подходящото име на последователност) вместо lastval
.