使用 2 个不同的表删除级联
On delete cascade with 2 different tables
我有以下情况,我想做的是,如果我从DashboardKpi或DashboardGrid中删除一行,那么ComponentProperty上对应的记录也应该被删除。
这可能吗?到目前为止,我只能反其道而行之,如果我删除一个 ComponentProperty,相应的 DashboardKpi 或 DashboardGrid 也会被删除,但这绝对不是我想要的。
ER Diagram
有什么建议吗?
删除级联对您没有帮助。正如您在删除行级联时提到的那样,它将删除其他表中引用原始删除行的所有其他行,之后是您的原始行。
逻辑的原因是ComponentProperty中的行可以没有DashboardKpi或DashboardGrid,但DashboardKpi或DashboardGrid中的行(如果它们引用了ComponentProperty)不能因为它们依赖于ComponentProperty。
您可以根据您的 DBMS 以不同的方式解决您的问题。他们中的大多数人的共同点是使用过程或触发器。如果您使用 Postgresql,那么您也可以使用 ON DELETE 规则。
我有以下情况,我想做的是,如果我从DashboardKpi或DashboardGrid中删除一行,那么ComponentProperty上对应的记录也应该被删除。
这可能吗?到目前为止,我只能反其道而行之,如果我删除一个 ComponentProperty,相应的 DashboardKpi 或 DashboardGrid 也会被删除,但这绝对不是我想要的。
ER Diagram
有什么建议吗?
删除级联对您没有帮助。正如您在删除行级联时提到的那样,它将删除其他表中引用原始删除行的所有其他行,之后是您的原始行。
逻辑的原因是ComponentProperty中的行可以没有DashboardKpi或DashboardGrid,但DashboardKpi或DashboardGrid中的行(如果它们引用了ComponentProperty)不能因为它们依赖于ComponentProperty。
您可以根据您的 DBMS 以不同的方式解决您的问题。他们中的大多数人的共同点是使用过程或触发器。如果您使用 Postgresql,那么您也可以使用 ON DELETE 规则。