1
我正在测试不同的外键删除选项。我累了级联,没有动作,设置为null,所有作品,除了默认设置。 SQL SERVER报告错误:sql server 2008外键删除集默认不工作
消息547,级别16,状态0,行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
那么设置默认值有什么意义?我认为它会像set null一样工作,但会将列设置为某个默认值。你能举一个例子,设置默认是有意义的吗? – thotwielder
如果您的父表中有'0'记录,那么这将是一个正确的默认值。例如考虑一个库存系统。如果你删除一个类别,那个类别的产品不能仅仅消失 - 它们仍然存在。所以你建立了一个永久的“默认”类别,例如id = 0,这样当你删除“坏圣诞礼物”类别时,奶奶的丑陋毛衣就会进入“默认”类别。 –
优秀!谢谢。 – thotwielder