簡體   English   中英

在表級別和列級別添加PRIMARY KEY約束之間有什么區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM