如何使用连接表的关系数据库删除值。
电影数据库示例:电影表 -> Movie_has_Genre 表 -> 流派表
如果我删除一部电影,我想删除 Movie_has_Genre 表中外键与电影表中的 id 相同的所有行。
我应该在电影表上使用触发器(在删除时......在关系表上删除)还是有其他内置函数来处理这个?
我只是模糊地记得有另一种方法可以做到这一点,但不记得它叫什么。
如何使用连接表的关系数据库删除值。
电影数据库示例:电影表 -> Movie_has_Genre 表 -> 流派表
如果我删除一部电影,我想删除 Movie_has_Genre 表中外键与电影表中的 id 相同的所有行。
我应该在电影表上使用触发器(在删除时......在关系表上删除)还是有其他内置函数来处理这个?
我只是模糊地记得有另一种方法可以做到这一点,但不记得它叫什么。
您使用级联删除语句。它的语法如下所示:
ALTER TABLE dbo.T2
ADD CONSTRAINT FK_T1_T2_Cascade
FOREIGN KEY (keyId) REFERENCES dbo.T1(keyId) ON DELETE CASCADE
完整的语法是:这里
SQL Server 中有一个选项可以通过 CASCADE 设置自动执行此操作,如图所示。
这是一个非常方便的选项,但请确保不要将其应用于所有具有外键引用的表,因为它可能会导致数据意外丢失。确保彻底分析天气,这不会造成任何损害。
另一种选择是从首先引用的表开始使用多个删除语句。