В моей таблице PostgreSQL при попытке удалить запись возникает следующая ошибка:
SQL Error [23503]: ERROR: update or delete on table "parent_table" violates foreign key constraint "parent_table_header_ref_id_id_4fd15d08_fk" on table "child_table"
Detail: Key (id)=(1) is still referenced from table "child_table".
Это происходит даже при включенном параметре ON DELETE RESTRICT. Существует ли какой-либо сценарий или функция/цикл PostgreSQL, который можно использовать для рекурсивного удаления данных, гарантируя, что все связанные записи на нескольких уровнях будут безопасно удалены при наличии ограничений внешнего ключа?
Python Псевдокод:
def delete_record(query):
while True:
try:
cursor.execute(query)
break
except Exception as exception:
# exception = 'SQL Error [23503]: ERROR: update or delete on table "parent_table" violates foreign key constraint "parent_table_header_ref_id_id_4fd15d08_fk" on table "child_table"'
child_table_delete_query = get_delete_query(exception)
# child_table_delete_query = 'delete from child_table where header_ref_id_id = 1'
delete_record(child_table_delete_query)
delete_record('delete from parent_table where id = 1')
Подробнее здесь: https://stackoverflow.com/questions/786 ... constraint
Рекурсивное удаление PostgreSQL с ограничением внешнего ключа ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение