PostgreSQL可以为空的外键

时间:2013-12-30 16:10:59

标签: postgresql foreign-keys key nullable

我正在创建一个postgreSQL表,它有一个引用自己的外键,所以它是一个类似于树的结构:

CREATE TABLE Person(
    ID serial PRIMARY KEY,
    Description text,
    Name varchar(5),
    ParentID serial,
    FOREIGN KEY (ParentID) REFERENCES Person(ID)
    );

问题是ParentID自动设置为NOT NULL,因此该树中没有root。如何让它可以为空?

1 个答案:

答案 0 :(得分:12)

您可能希望将ParentID的类型更改为整数,这是串行的基础类型。

CREATE TABLE Person(
    ID serial PRIMARY KEY,
    Description text,
    Name varchar(5),
    ParentID integer,
    FOREIGN KEY (ParentID) REFERENCES Person(ID)
);

此处提供了整数和串行数据类型的文档:http://www.postgresql.org/docs/current/static/datatype-numeric.html