这是一个简单的表,其中的记录可以引用同一表中的父记录:
CREATE TABLE foo (
id SERIAL PRIMARY KEY,
parent_id INT NULL,
num INT NOT NULL,
txt TEXT NULL,
FOREIGN KEY (parent_id) REFERENCES foo(id)
);
在附加要求下,num
父记录和子记录之间的其他字段值之一必须相同,我认为应该使用复合外键来解决问题。我将最后一行更改为
FOREIGN KEY (parent_id, num) REFERENCES foo(id, num)
并得到错误:没有唯一的约束条件匹配给定表“ foo”的键。
我可以轻松添加此约束,但是当所引用的列(id
)中的一个已被保证是唯一的时,我不明白为什么有必要这样做?从我的角度来看,新约束将是多余的。
NULL != NULL
。无论如何.. :)