Phiên bản ngắn ở đây là sử dụng lastval không đủ tiêu chuẩn là một ý tưởng tồi. Trình kích hoạt, quy tắc, v.v. có thể gây ra sự cố.
Bạn nên tránh lastval toàn bộ. Sử dụng:
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;
ở đâu id phải theo tên của cột khóa đã tạo.
Cách tiếp cận này sẽ xử lý các chèn nhiều giá trị và INSERT INTO ... SELECT ... một cách chính xác và sẽ không gặp sự cố với trình tự chạm vào trình kích hoạt.
Nếu bạn phải sử dụng phương pháp dựa trên lời gọi hàm, ít nhất hãy sử dụng currval('tablename_id_seq') (chuyển tên trình tự thích hợp) thay vì lastval .