想象我有这个名为Department的表.每个部门都可以有子部门.
我想将一个名为ParentDepartmentID的列作为另一个部门的外键.如果此键为空,则表示它是父级顶级部门,而不是任何其他部门的子级.
我想你可以称之为自引用ID. sqlite支持这个吗?有外键,但也允许空值?
你会如何解决这个用例?
解决方法
为什么不?
sqlite> create table selfref (id integer primary key,name string,parent integer references selfref (id)); sqlite> .schema CREATE TABLE selfref (id integer primary key,parent integer references selfref (id)); sqlite> insert into selfref values (null,"alice",null); sqlite> insert into selfref values (null,"bob","charlie",(select id from selfref where name = "alice")); sqlite> select * from selfref; 1|alice| 2|bob| 3|charlie|1 sqlite>