我有一個關稅表。如何根據字段值創建約束條件
表有三列:id INT,接收INT,is_default INT(0/1);
我需要作出約束,這將限制is_default = 1的同一接待的新關稅的創建。因此,每個接待只能有一個默認關稅。
感謝
我有一個關稅表。如何根據字段值創建約束條件
表有三列:id INT,接收INT,is_default INT(0/1);
我需要作出約束,這將限制is_default = 1的同一接待的新關稅的創建。因此,每個接待只能有一個默認關稅。
感謝
你需要一個unique partial index:
CREATE UNIQUE INDEX uniq_tariff_reception_where_is_default
ON tariff (reception)
WHERE is_default = 1
UNIQUE
索引工作完全一樣UNIQUE
限制(在引擎蓋下,UNIQUE
約束實際創建UNIQUE
指標實現唯一性),但約束版本cannot be partial:
添加一個唯一約束wil l在約束中列出的列或列組上自動創建一個唯一的B-樹索引。僅覆蓋一些行的唯一性限制不能被寫爲唯一約束,但可以通過創建唯一的部分索引來強制執行此限制。
注:請考慮使用BOOLEAN
型爲is_default
列。因此,您的指數可能是WHERE is_default = TRUE
甚至WHERE is_default
。
非常感謝! –
不使用整數作爲布爾標誌。使用'boolean'列 –