La versión corta aquí es usar lastval
no calificado es una mala idea Los disparadores, las reglas, etc. pueden causar problemas.
Debes evitar lastval
enteramente. Usar:
BEGIN;
INSERT INTO "users" ("email", "first_name", "last_name", "password", "objectstate_id", "activate_rid")
VALUES ('[email protected]', 'Xpress', 'Care', 'f9fecdd84ee071806423adf30d6d6ff04e1a0a2c6688f2c057ddbab1d6b55d02', 4, 'EMQHTMMvViAB5BdYj0E6')
RETURNING id;
donde id
debe por el nombre de la columna de clave generada.
Este enfoque manejará inserciones de valores múltiples y INSERT INTO ... SELECT ...
correctamente, y no tendrá problemas con las secuencias de toque de disparadores.
Si debe usar un enfoque basado en llamadas a funciones, al menos use currval('tablename_id_seq')
(pasando el nombre de secuencia apropiado) en lugar de lastval
.