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 ('example@sqldat.com', '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 .