Bạn cần một biểu thức bảng chung cho loại chuỗi chèn này:
with ta as (
INSERT INTO tbl_b (status) VALUES ('OK')
RETURNING id
)
INSERT INTO tbl_a (name, tbl_b_reference)
VALUES ('myName', (select id from ta));
Một tùy chọn khác là chỉ cần sử dụng lastval()
hàm để tham chiếu đến giá trị trình tự được tạo cuối cùng:
INSERT INTO tbl_b (status) VALUES ('OK');
INSERT INTO tbl_a (name, tbl_b_reference)
VALUES ('myName', lastval());
Lưu ý rằng bạn không được có bất kỳ câu lệnh nào khác tạo ra các giá trị trình tự giữa hai câu lệnh đó.
Hoặc sử dụng hàm currval ():
INSERT INTO tbl_b (status) VALUES ('OK');
INSERT INTO tbl_a (name, tbl_b_reference)
VALUES ('myName', currval('tbl_b_id_seq'));
'tbl_b_id_seq'
là tên chuẩn mà Postgres sử dụng cho một chuỗi được tạo cho một serial
cột: