очень нужно. Две недели мозг ломаем.
Есть очень древняя PG и кастомная обработка, которая выгружает в базу данные и анализирует их по определенным алгоритмам - не суть важно. В одной из таблиц появилось кривое значение, которое мешает теперь производить выгрузку - я долго разбирался как это вообще работает, теперь пытаюсь эту строку удалить - и не получается. Пишет, что в другой таблице есть связки с ней.
Вопрос как мне удалить эту строку и все ее зависимости?
Пробовал так:
DELETE FROM some_table CASCADE where _id = 999999999;
Получил ошибку:
ERROR: update or delete on table "deals" violates foreign key constraint "deal_labour_unit_charges__deal_id_fkey" on table "deal_labour_unit_charges"
DETAIL: Key (_id)=(999999999) is still referenced from table "deal_labour_unit_charges".
если у констрейтов не было настроек на каскадное удаление, то варианта по сути два: 1) написать универсальный запрос, который по пробежится схеме БД, проанализирует все кострейты и выполнит удаление в нужных (видел на SO похожий запрос) 2) в той же транзакции удалить данные из таблиц, на которых висят FK. и если первый запрос еще может требовать либо углубленных знаний, либо навыков гуглежа, то... что с вторым вариантом? не получается?
удали связку с этой таблицей и все
Обсуждают сегодня