我想修改我的表约束。从现在开始,名称必须是唯一的。但是,只有当具有给定名称的行处于活动状态时,我才会拥有唯一的名称。所以我添加了列is_active。
CREATE TABLE item
(
(...)
name character varying(50) NOT NULL,
is_active boolean NOT NULL DEFAULT true,
CONSTRAINT uc_item_name UNIQUE (name),
(...)
)
我可以删除唯一约束并添加触发器或函数调用吗?
任何人都可以帮助我吗?这只是我与Postgres一起冒险的开始。我使用的是版本9.6
答案 0 :(得分:4)
您可以创建部分唯一索引:
create unique index on item (name)
where is_active;