iT邦幫忙

2025 iThome 鐵人賽

DAY 7
1

如果資料庫中的某張table的某個欄位有條件上的限制,除了可以在程式中做判斷之外,也可以使用 Check Constraints 這個功能,就可以在新增或更新資料的時候,檢查資料是否符合預期。如果只針對單一欄位做限制,可以在該欄位後面加上 CHECK 這個keyword,並在 CHECK 後面加上限制的條件。

CREATE TABLE products (
 product_no integer,
 name text,
 price numeric CHECK (price > 0)
);

這樣在 INSERTUPDATE 的時候,資料庫就會檢查資料合不合法,不合法會立刻吐出錯誤訊息。


從上面的範例可以看到,PostgreSQL自動的把 CHECK 的名稱叫做 products_price_check ,但如果我們想要自己取名,可以在 CHECK 前面加上 CONSTRAINT 和名稱,就可以替這個 CHECK 定義名稱。

CREATE TABLE products (
  product_no integer,
  name text,
  price numeric CONSTRAINT positive_price CHECK (price > 0)
);

新增完之後,就可以在Constraints裡面看到剛才新增的 positive_price

除了可以針對單一欄位設 Check Constraints,也可以針對多個欄位設置條件,只要把 CHECK 跟欄位並行放置,就可以對多個欄位設置Constraints,甚至還可以設定多個條件。

CREATE TABLE products (
  product_no integer,
  name text,
  price numeric CHECK (price > 0),
  discounted_price numeric CHECK (discounted_price > 0),
  CHECK (discounted_price > 0 AND price > discounted_price)
);

今天就先介紹到這邊,明天來談談Check Constraints的使用注意事項和範例。


上一篇
Day 6: 基本語法介紹 - Aggregate Functions
下一篇
Day 8: Check Constraints注意事項和範例
系列文
我所不知道的PostgreSQL 30天30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言