在SQL Server 2008中,如果在某些外键中使用其他表中涉及的记录,我怎么能禁止删除(或抛出异常)?
我已经在关系中设置了“删除 - >没有”,但这不是我需要的......我需要停止删除...
让我们说,如果我有桌面书籍和表格作者,并且在书中我有idAuthor,如果我至少有一本书写的,我怎么能禁止删除作者呢?
答案 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。
此设置强制服务器在约束被破坏时抛出错误。
PS:我不知道你在删除的位置 - ">>没什么"在SQL Server中。