如果从其他表引用记录,则禁止删除

时间:2014-12-12 13:42:24

标签: sql-server foreign-keys

在SQL Server 2008中,如果在某些外键中使用其他表中涉及的记录,我怎么能禁止删除(或抛出异常)?

我已经在关系中设置了“删除 - >没有”,但这不是我需要的......我需要停止删除...

让我们说,如果我有桌面书籍和表格作者,并且在书中我有idAuthor,如果我至少有一本书写的,我怎么能禁止删除作者呢?

2 个答案:

答案 0 :(得分:1)

对于SQL Server,请使用no action

alter table ...
add foreign key
...
on delete no action

其他数据库使用restrict

alter table ...
add foreign key
...
on delete restrict

在所有情况下,此选项都是默认选项,如果通过删除父行违反约束,则会引发异常。

答案 1 :(得分:0)

默认情况下,这在SQL Server中发生 - 对于具有引用它的外键行(子)的实体,不允许删除。所以你应该有"强制执行外键约束"默认情况下,在“外键关系”属性中设置为YES。

此设置强制服务器在约束被破坏时抛出错误。

partial source

PS:我不知道你在删除的位置 - ">>没什么"在SQL Server中。