Die Kurzversion hier ist die mit unqualifiziertem lastval
ist eine schlechte Idee. Auslöser, Regeln usw. können Probleme verursachen.
Sie sollten lastval
vermeiden völlig. Verwendung:
BEGIN;
INSERT INTO "users" ("email", "first_name", "last_name", "password", "objectstate_id", "activate_rid")
VALUES ('[email protected]', 'Xpress', 'Care', 'f9fecdd84ee071806423adf30d6d6ff04e1a0a2c6688f2c057ddbab1d6b55d02', 4, 'EMQHTMMvViAB5BdYj0E6')
RETURNING id;
wobei id
sollte der Name der generierten Schlüsselspalte sein.
Dieser Ansatz behandelt mehrwertige Einfügungen und INSERT INTO ... SELECT ...
korrekt und hat keine Probleme mit Triggern, die Sequenzen berühren.
Wenn Sie einen auf Funktionsaufrufen basierenden Ansatz verwenden müssen, verwenden Sie zumindest currval('tablename_id_seq')
(Übergabe des entsprechenden Sequenznamens) anstelle von lastval
.