PostgreSQL表中的重复主键

时间:2017-09-18 15:06:18

标签: sql postgresql

我创建了一个名为' link'在PostgreSQL数据库中。然后我创建了另一个表' link_copy'与' link'

具有相同的结构
CREATE TABLE link (
id select PRIMARY KEY,
url VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL);

CREATE TABLE link_copy (LIKE link);

我从'链接'复制了一行。 to' link_copy'曾经有过' id'然后我复制了来自'链接'的所有行。 to' link_copy'。我很惊讶地看到排在' id'在' link_copy'中两次= 2次。 如果我选择了' id'列是主键(默认情况下是UNIQUE NOT NULL),那么为什么它允许' id' = 2行要插入' link_copy'两次?

我在Mac上使用postgresql 9.5和pgadmin III。

screenshot for final link_copy status

2 个答案:

答案 0 :(得分:0)

使用CREATE TABLE命令创建与另一个具有相同结构的新表时,它会复制列,但不会复制所有约束。 <{1}}表在以这种方式创建后不会定义主键。

答案 1 :(得分:0)

创建如下表。这将创建所有约束。

CREATE TABLE link_copy (LIKE link  including constraints including indexes);