Я хотел бы удалить строки из таблицы, где не существует зависимостей от внешнего ключа.Если они существуют, строки должны быть помечены как «тупые» для поддержания целостности отношений.Цель состоит в том, чтобы сохранить только необходимые данные.
Удаление затронет только одну строку;это не вызывает каскадное удаление, и я не пытаюсь удалить иждивенцев.Например, на строку клиента ссылаются во многих других таблицах, таких как счет-фактура, соглашение, заказ на изменение и т. Д., Эта строка клиента должна быть помечена как «не заполненная».Если таких ссылок нет, строка клиента может быть удалена из таблицы.
Я ищу совет о том, как лучше всего справиться с этим из кода клиентского приложения.Я использую PostgreSQL 9.1.
Вот текущий подход, основанный на «знании» Постгресом зависимостей внешнего ключа:
Begin transation
delete row x
if SQLSTATE Error Code = 23503
update row set deadfiled = true
if success
commit transaction
else rollback
В некоторых публикациях кажется, что вышеупомянутый метод считается хрупким.Есть ли лучший способ сделать это?