我创建了一个名为' 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。
答案 0 :(得分:0)
使用CREATE TABLE
命令创建与另一个具有相同结构的新表时,它会复制列,但不会复制所有约束。 <{1}}表在以这种方式创建后不会定义主键。
答案 1 :(得分:0)
创建如下表。这将创建所有约束。
CREATE TABLE link_copy (LIKE link including constraints including indexes);