我想知道在SQL Server中使用外键的原因,因为我与同事之一进行了辩论。SQL Server中的外键
我有意见,当两个表通过外键连接时,当记录从父表中删除,那么从子表中删除相同的引用记录也应该删除。
说例如我有两个表,Table1和Table2。 Table1有一个id = 1的记录,而Table2有两个id = 1的记录。表2是一个子表,通过一个外键与Table1连接。现在,当我尝试从Table1中删除id = 1记录时,应该同时从Table2中删除id = 1(2条记录)。
他说这是错误的。如果是外键,我必须分别从两个表中删除记录。
谁是正确的?
好的答案,但并没有完全回答OP关于'在SQL Server中使用外键'的第一个问题。但我认为这会打击范围。 – 2011-04-07 18:38:31
但是,如果我设置删除和更新为无操作的外键,当我尝试从父表中删除记录,然后我得到错误的子表中的外键冲突。 – Abbas 2011-04-07 19:01:20
@abbas:是的 - 如果你设置“无动作”,那么它是**你的**首先删除子行的责任。 – 2011-04-07 20:20:38