Я создаю записи в транзакции.Есть ли способ объявить строку postgresql неизменяемой при заданном условии?
begin;
update parent_records where id=5 set closed = now();
insert into child_records ...;
commit;
Я хочу, чтобы предотвратить вставки новых child_records когда родительский запись closed
. Кажется, что установка правила на parent_records взорвалась на update
действиях, когда закрытие решит проблему, поскольку транзакция завершится с ошибкой.
Я мог бы сделать обновление с where closed is null
, а затем проверить код приложения, если какие-либо строки были обновлены и откат, но я предпочел бы ограничение в самой базе данных.
Как пометить родительскую строку неизменяемой (сбой обновлений с ошибкой) при выполнении условия (closed
column not null)?
Вы можете создать триггер, который выдает ошибку –