Postgresql 如何基于字段值创建约束

Postgresql 如何基于字段值创建约束,postgresql,Postgresql,我有一张有关税的桌子 表有三列:id INT、receivement INT、is_default INT(0/1) 我需要进行约束,这将限制为is_default=1的相同接收创建新的费率。因此,每个接待处只能有一个默认收费。您需要一个: CREATE UNIQUE INDEX uniq_tariff_reception_where_is_default ON tariff (reception) WHERE is_default = 1 UNIQUE索引的工作原理与UNIQUE约束

我有一张有关税的桌子

表有三列:id INT、receivement INT、is_default INT(0/1)

我需要进行约束,这将限制为is_default=1的相同接收创建新的费率。因此,每个接待处只能有一个默认收费。

您需要一个:

CREATE UNIQUE INDEX uniq_tariff_reception_where_is_default
  ON tariff (reception)
  WHERE is_default = 1
UNIQUE
索引的工作原理与
UNIQUE
约束完全相同(在引擎盖下,
UNIQUE
约束实际上创建
UNIQUE
索引以实现唯一性),但约束版本:

添加唯一约束将自动在约束中列出的列或列组上创建唯一的B树索引。仅覆盖某些行的唯一性限制不能写为唯一性限制,但可以通过创建唯一的部分索引来强制执行此类限制


注释:请考虑使用<代码>布尔< <代码>类型,用于<代码> iSysSudio列。这样,您的索引可以是

WHERE is_default=TRUE
甚至
WHERE is_default

不要将整数用作布尔标志。使用
boolean