PostgreSQL 的其中一個關鍵特性是能夠對資料實施各種條件約束,確保資料的完整性和可靠性。今天的文章將概述 PostgreSQL 的各種條件約束類型,並結合免費的 「dvdrental」範例資料庫 中的範例探索它們的用法。
1. CHECK 條件約束:
CHECK 條件約束可讓你指定在插入或更新資料時必須滿足的欄位條件。這能確保只有有效的資料儲存在資料庫中。例如,如果你有一個「customers」資料表,並且希望確保客戶的年齡至少為 18 歲,你可以加入以下的 CHECK 條件約束:
ALTER TABLE customers
ADD CONSTRAINT check_age CHECK (age >= 18);
2. NOT NULL 條件約束:
NOT NULL 條件約束能確保一個欄位不能有 NULL 值。例如,在「customers」資料表中,如果你想確保每個客戶都有一個有效的電子郵件地址,你可以對 email 欄強制執行 NOT NULL 條件約束,如下所示:
ALTER TABLE customers
ALTER COLUMN email SET NOT NULL;
3. UNIQUE 條件約束:
UNIQUE 條件約束能確保一欄或一組欄中的值在資料表中的所有列中是唯一的。這通常用於像使用者名稱或電子郵件地址這樣的欄位,以避免重複。例如,在「customers」資料表中,如果你想確保每個客戶都有一個唯一的電子郵件地址,你可以新增一個 UNIQUE 條件約束,如下所示:
ALTER TABLE customers
ADD CONSTRAINT unique_email UNIQUE (email);
4. 主索引鍵:
主索引鍵是一個 UNIQUE 條件約束和 NOT NULL 條件約束的組合。它能能識別資料表中的每筆記錄並確保資料完整性。在「customers」資料表中,可能會有一個名為「customer_id」的欄位作為主索引鍵:
ALTER TABLE customers
ADD CONSTRAINT pk_customer_id PRIMARY KEY (customer_id);
5. 外部索引鍵:
外部索引鍵透過強制執行參考完整性來建立兩個資料表之間的關聯。它們能確保一個資料表的欄值與另一個資料表的欄值相符。例如,在「rental」資料表中,如果要確保每個租借記錄都參考有效的客戶,則可以新增以下的外部索引鍵條件約束:
ALTER TABLE rental
ADD CONSTRAINT fk_customer_id
FOREIGN KEY (customer_id)
REFERENCES customers(customer_id);
6. EXCLUDE 條件約束:
EXCLUDE 條件約束可以確保資料表中沒有兩列能滿足指定的述詞。這樣你就可以定義比 UNIQUE 或 CHECK 條件約束複雜的自訂條件約束。例如,在「bookings」資料表中,你希望確保同一房間的兩個預訂在時間上不會重疊:
ALTER TABLE bookings
ADD CONSTRAINT exclude_overlapping_bookings
EXCLUDE USING GIST (room_id WITH =, booking_range WITH &&);
Navicat 中的條件約束
Navicat for PostgreSQL 16 提供了一個易於使用的圖形資料表設計器,用於建立和管理 PostgreSQL 條件約束:
當你在「鍵」欄中為一個或多個欄位加入鍵圖示時,就會建立主索引鍵修件約束。其他約束可在他們相關的索引標籤上找到。
總結
PostgreSQL 提供了多種不同類型的條件約束,以維護資料完整性和強制執行業務規則。了解這些條件約束以及如何有效地使用它們對於設計強大且可靠的資料庫結構至關重要。
你是否正在尋找一個的易於使用的 PostgreSQL 資料庫開發圖形化工具?Navicat 16 for PostgreSQL 是你的不二之選。按一下 此處 下載完整功能的應用程式,免費試用 14 天!