Я использую MySQL. У меня есть запись на столе A
с столбцом с мягким удалением: active
со значением 0
.MySQL check before soft delete
Эта строка связана с 11 таблицами. Все они имеют одинаковый столбец active
.
Я должен быть уверен, что запись на A
удаляется производится только при все ссылки через эти 11 таблицы имеют active = 0
также.
Я знаю, что могу написать представление с этими запросами, чтобы получить, могу ли я «удалить» или нет. Но это один из примеров, и ИМО не очень практичное решение. Обновление Cascade не будет работать либо потому, что я не может удалить родительскую строку, если какой-либо из дочерних элементов по-прежнему активен.
Спасибо!
Вы говорите: я должен быть уверен, что запись на 'A' будет удалена **, только если ** все ссылки в 11 таблицах также имеют значение' active = 0'. Удалено, вы имеете в виду жесткое удаление или мягкое удаление (set active = 0) –
Это может стать беспорядочным, возможно, считать fk ограничивать удаление, что означает, что вам всегда нужно удалять дочерние элементы перед родителем. – Augwa
@SteveMandl Да. Скажите, что у вас есть Студент. Вы не можете удалить (Active = 0), если он все еще находится на курсе (активен = 1 в таблице Students_Courses). Мне нужно сохранить обе записи для журналов истории. – Jaxedin