У вас есть два варианта.
Первый использует функцию lastval()
, которая возвращает значение последнего сгенерированного значения последовательности:
insert into cinema(name, is_active) values ('Cinema One', true);
insert into theater(cinema_id) values (lastval());
В качестве альтернативы вы можете передать имя последовательности в функцию currval()
:
insert into theater(cinema_id)
values (currval(pg_get_serial_sequence('cinema', 'id')));
В качестве альтернативы вы можете связать два оператора, используя CTE и возвращающее предложение:
with new_cinema as (
insert into cinema (name, is_active)
values ('Cinema One', true)
returning id
)
insert into theater (cinema_id)
select id
from new_cinema;
В обоих утверждениях я предполагаю, что theater.id
также является сгенерированным значением.