将引用设置为null或0是无效的吗?

时间:2009-12-20 04:41:51

标签: sql mysql tsql foreign-keys

我现在将在sqlite中执行此操作,因为它们支持外键和tsql以及mysql。

执行

之类的操作是否违法
CREATE TABLE comment(
id integer primary key,
parent integer references(comment.id),
author integer references(User.id),
desc varchar(max),
hidden  bit
deleted bit
);

其中parent可以是0或null,因为它是root并且没有父级? AFAIK我不会删除任何评论,但会将其设置为隐藏或deleted。我大多想知道我是否可以将root作为0或null,否则我不知道如何让注释有一个引用父(我不能让第一个指向它自己?)。

1 个答案:

答案 0 :(得分:4)

具有FOREIGN KEY的列可以为空,但如果父表中没有对应的行且其中包含“0”,则它不能保持为“0”。 '0'是一个值,而NULL表示“无值”。

因此,在这种情况下,您正在设置的“邻接列表”结构的根节点将为“父”的值设置为NULL。