Всем привет. Вопрос такой - как выполнить последовательно в одной
транзакции несколько INSERT в связанные таблицы по FOREIGN KEY,
желательно не задействуя oid-ы? Примерный вид таблиц:
table oper table trans
----------- ------------------
cop_id serial (PR_KEY) ------------> cop_id int (FG_KEY)
..... .....
op_code num (NOT UNIQUE) .....
1-й insert в таблицу oper, затем нужно узнать значение cop_id и
использовать его для insert 'ов в таблицу trans. Использование
триггера не подходит (в силу постановки задачи). Можно ли узнать
значение cop_id после первого insert через MAX() и "безопасно" ли
это? Пока до понедельника ( ответы лучше мыльте peter@sbank.elcom.ru)
Хорошо, тогда вопрос такой:
Если транзацикция будет выглядеть так -
BEGIN;
insert into oper values(....);
select curval(..);
insert into trans values(....);
COMMIT;
то не будет ли полученное значение от curval - "fake", поскольку
в это же время может быть запущена еще какая нить операция с
insert-ом в таблицу oper? Кстати секвенция у меня уже есть - она
строится по умолчанию при создании таблицы с полем serial.