[英]What's the difference between adding PRIMARY KEY constraint on table level and on column level?
如問題標題所述,我們可以在列級別添加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
約束(或其他約束)的方法之間是否有明顯區別? 謝謝。
完全沒有區別。
名稱本身( PRIMARY KEY)表明它不是在單個列級別上定義的。
實際上,所謂的“在列級別上”不過是主鍵位於單個列中時的一種方便語法。
順便說一句,主鍵表示NOT NULL UNIQUE
,因此您可以跳過將它們定義為UNIQUE
。
主鍵和唯一鍵都是實體完整性約束,在很多方面都相似。 但是,在編程方面,他們有很大的不同。 兩者都是基本概念,主要用於數據庫管理系統。
主鍵是數據庫表的一個或多個列/字段的集合,它們唯一地標識表中的記錄。 另一方面,唯一鍵可防止兩個記錄在列中具有相同的值。
從概念上講,一個給定的表只能有一個PRIMARY KEY,而一個表則可以有多個UNIQUE KEY。
主鍵必須是唯一的,但是唯一鍵不必一定是主鍵。
主鍵不能接受表中的NULL值,而唯一鍵可以允許NULL值(表中只有一個NULL除外)。
您可以參考以下文章: http : //covelign.com/3Y8P
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.