如问题标题所述,我们可以在列级别添加PRIMARY KEY约束:

animals=# CREATE TABLE temp (
id serial UNIQUE PRIMARY KEY);
CREATE TABLE
animals=# \d temp
                            Table "public.temp"
 Column |  Type   | Collation | Nullable |             Default
--------+---------+-----------+----------+----------------------------------
 id     | integer |           | not null | nextval('temp_id_seq'::regclass)
Indexes:
    "temp_pkey" PRIMARY KEY, btree (id)

或者在桌子上:
animals=# CREATE TABLE temp_1 (
id serial UNIQUE,
PRIMARY KEY (id));
CREATE TABLE
animals=# \d temp_1
                            Table "public.temp_1"
 Column |  Type   | Collation | Nullable |              Default
--------+---------+-----------+----------+------------------------------------
 id     | integer |           | not null | nextval('temp_1_id_seq'::regclass)
Indexes:
    "temp_1_pkey" PRIMARY KEY, btree (id)

这两种添加PRIMARY KEY约束(或其他约束)的方法之间有什么明显的区别吗?
这会影响表之间相互引用的方式吗?
谢谢。

最佳答案

根本没有区别。
名称本身,主键表明它不是在单个列级别上定义的。
实际上,当主键包含在一个列中时,您所称的“列级”只是一种方便的语法。
顺便说一下,主键是指NOT NULL UNIQUE,所以您可以跳过将它们定义为UNIQUE

关于sql - 在表级别和列级别添加PRIMARY KEY约束之间有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55134064/

10-16 13:16