我有一张关税表。
表有三列:id INT,接收INT,is_default INT(0/1);
我需要制定约束,这将限制为is_default = 1的同一接收创建新的资费。所以每次接收只能有一个默认资费。
由于
答案 0 :(得分:1)
CREATE UNIQUE INDEX uniq_tariff_reception_where_is_default
ON tariff (reception)
WHERE is_default = 1
UNIQUE
索引的工作方式与UNIQUE
约束完全相同(UNIQUE
约束实际创建UNIQUE
索引以实现唯一性“,但约束版本{{ 3}}:
添加唯一约束将自动在约束中列出的列或列组上创建唯一的B树索引。仅覆盖某些行的唯一性限制不能写为唯一约束,但可以通过创建唯一的部分索引来强制执行此类限制。
备注:请考虑使用BOOLEAN
列的is_default
类型。这样,您的索引可以是WHERE is_default = TRUE
甚至是WHERE is_default
。