考虑这个自我引用表:
String tmpFlag= request.getParameter("Flag");
if( tmpFlag != null && tmpFlag !="" ){
//some logic
}
现在,让我们尝试创建一个自引用外键:
create table _test_cascade
(id int not null identity primary key,
other_id int null)
SQL server(11.0.2100)会给你一个臭名昭着的错误:
alter table _test_cascade
add constraint _test_cascade_constraint
foreign key (other_id) references _test_cascade(id)
on delete set null
我从this question知道SQL Server不是很擅长检测实际周期和级联路径,但我无法理解这种情况如何被视为此类问题的可能来源,因为没有级联操作,只有一个外键。
This other question是类似的,但在这种情况下,自引用外键指定删除级联,我明白为什么是危险的,不应该被允许。
我的问题是,为什么不允许这种关系?
PD:我知道通常自我引用表是数据库设计"气味",但修复该设计不适合我。修改
这已被标记为this other question的副本,但该更为通用且所提供的答案不适用于此方案,因为在这种情况下,没有指定级联删除或多个关联。我理解一般问题,我不明白为什么它适用于这种情况。