MariaDB При удалении CASCADE для строк без отношения внешнего ключа - PullRequest
0 голосов
/ 06 августа 2020

У меня проблема, над которой я ломал голову последние несколько дней. У меня есть реляционная БД (mariaDB), в которой есть две таблицы. Таблица A и таблица B. Таблица A имеет отношение к самой себе, и когда одна строка удаляется, несколько МОГУТ быть удалены (с помощью CASCADE удаления). Таблица B не имеет отношения к таблице A. Я не могу создать связь, так как строки, которые в настоящее время присутствуют в таблицах, могут иметь или не иметь правильные (для обеспечения соблюдения этой связи) данные в ней (я не могу на это повлиять).

Когда я удаляю запись из таблицы A, я хочу, чтобы неявно связанные данные из таблицы B также были удалены. Поскольку внешний ключ не может быть создан, удаление CASCADE кажется невозможным. Я подумал о триггере, который будет находить соответствующие строки при каждом удалении из таблицы A, однако триггеры не будут срабатывать для строк, удаленных с помощью CASCADE удаления. Это означает, что когда строка X (из таблицы A) удаляется в результате CASCADE, соответствующие данные из таблицы B не будут удалены.

Если бы мне пришлось резюмировать это до вопроса: возможно ли удалить строку, как при удалении CASCADE, без использования внешних ключей или триггеров?

Спасибо за чтение, цените это!

1 Ответ

0 голосов
/ 06 августа 2020

Спасибо @ Akina.

Перебрать строки, относящиеся к той, что удалена в триггере, а затем удалить все строки, относящиеся к этим строкам в таблице B. Это работает, но я не могу принять свой ответ как еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...