如问题标题所述,我们可以在列级别添加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/