Ini dapat dilakukan dengan menggunakan data yang memodifikasi ekspresi tabel umum:
with new_order as (
insert into orders (id, date) values (1, current_date)
returning id
)
insert into completedby (employee_id, order_id)
values
( 42 -- employee_id,
(select id from new_order)
);
Bagian pertama disisipkan ke dalam orders
tabel dan mengembalikan ID yang dimasukkan. Bagian kedua kemudian menyisipkan baris ke dalam completedby
tabel menggunakan employee_id yang diketahui dan mengambil order_id dari langkah sebelumnya.
Sunting
jika id
kolom di orders
tabel adalah serial
kolom dan Anda ingin membiarkan urutan menghasilkan nilai, Anda juga dapat melakukannya:
with new_order as (
insert into orders (date) values (current_date)
returning id
)
insert into completedby (employee_id, order_id)
values
( 42 -- employee_id,
(select id from new_order)
);