sql server 2008外键上的删除设置默认不起作用

时间:2012-11-16 15:24:16

标签: sql-server-2008-r2

我在删除选项上测试不同的外键。我累了级联,没有动作,设置为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

1 个答案:

答案 0 :(得分:1)

删除父表,触发子项中的set default。数据库尝试将子记录设置为其默认0。但是父表中没有0记录,触发了外键违规。