На каскаде удаления с 2 разными таблицами - PullRequest
0 голосов
/ 01 июня 2018

У меня есть следующий случай, что я хотел бы сделать, если я удалю строку из DashboardKpi или DashboardGrid, соответствующая запись в ComponentProperty также должна быть удалена.

Возможно ли это?До сих пор я мог делать только наоборот: если удалить ComponentProperty, соответствующий DashboardKpi или DashboardGrid будет удален, но это определенно не то, что я хочу.

ER Diagram

Любое предложение о том, как я могу сделать?

1 Ответ

0 голосов
/ 01 июня 2018

Удалить каскад не поможет вам.Как вы упомянули, когда вы удаляете каскад строк, он удалит все другие строки в других таблицах, которые ссылаются на исходную строку удаления, после этого вашу исходную строку.

Причина логики заключается в том, что строки в ComponentProperty могут быть без DashboardKpi или DashboardGrid, но строки в DashboardKpi или DashboardGrid (если они имеют ссылку на ComponentProperty) не могут быть причиной их зависимости от ComponentProperty.

Вы можете решить вашу проблему по-разному в зависимости от вашей СУБД.Общим для большинства из них является использование процедур или триггеров.Если вы используете Postgresql, то вы также можете использовать правило ON DELETE.

...