我在删除选项上测试不同的外键。我累了级联,没有动作,设置为null,所有工作,除了设置默认。 SQL SERVER只报告错误:
Msg 547,Level 16,State 0,Line 1 DELETE语句与FOREIGN KEY约束“FK_child_parent”冲突。冲突发生在数据库“Test”,表“dbo.Test_parent”,列“no”中。 声明已经终止。
create table Test_parent(
[no] int primary key
)
CREATE TABLE test_child(
SUB1 INT,
[NO] int DEFAULT 0 CONSTRAINT FK_child_parent REFERENCES Test_parent([no]) ON DELETE set default
)
insert into Test_parent values(1),(2)
insert into test_child values(1, 1)
insert into test_child values(2, 1)
delete from Test_parent
答案 0 :(得分:1)
删除父表,触发子项中的set default。数据库尝试将子记录设置为其默认0
。但是父表中没有0
记录,触发了外键违规。