使用关系表触发器删除值

时间:2013-08-30 04:13:20

标签: sql sql-server triggers

如何使用连接表的关系数据库删除值。

电影数据库示例: 电影表 - > Movie_has_Genre表 - >类型表

如果我删除了一部电影,我想删除所有的Movie_has_Genre表行,其中外键与电影表中的id相同。

我应该在Movie表上使用Trigger(在删除时...在关系表上执行删除)还是有其他内置函数来处理这个?

我只是模糊地回忆起有另一种方法可以做到这一点,但不记得它叫什么。

2 个答案:

答案 0 :(得分:2)

您使用级联删除语句。它的语法如下:

ALTER TABLE dbo.T2
   ADD CONSTRAINT FK_T1_T2_Cascade
   FOREIGN KEY (keyId) REFERENCES dbo.T1(keyId) ON DELETE CASCADE

完整语法为:here

答案 1 :(得分:0)

SQL Server中有一个选项可以通过CASCADE设置自动执行此操作,如图所示。

这是一个非常方便的选项,但请确保不要将它应用于所有具有外键引用的表,因为它可能会导致意外的数据丢失。确保彻底分析天气,这不会造成任何损害。

另一种选择是从首先引用的表开始使用多个delete语句。