Versi singkatnya di sini adalah menggunakan lastval
yang tidak memenuhi syarat adalah ide yang buruk. Pemicu, aturan, dll dapat menyebabkan masalah.
Anda harus menghindari lastval
sepenuhnya. Gunakan:
BEGIN;
INSERT INTO "users" ("email", "first_name", "last_name", "password", "objectstate_id", "activate_rid")
VALUES ('[email protected]', 'Xpress', 'Care', 'f9fecdd84ee071806423adf30d6d6ff04e1a0a2c6688f2c057ddbab1d6b55d02', 4, 'EMQHTMMvViAB5BdYj0E6')
RETURNING id;
dimana id
harus dengan nama kolom kunci yang dihasilkan.
Pendekatan ini akan menangani sisipan multi-nilai dan INSERT INTO ... SELECT ...
dengan benar, dan tidak akan mengalami masalah dengan pemicu yang menyentuh urutan.
Jika Anda harus menggunakan pendekatan berbasis panggilan fungsi, setidaknya gunakan currval('tablename_id_seq')
(melewati nama urutan yang sesuai) alih-alih lastval
.