【发布时间】:2017-06-16 10:12:56
【问题描述】:
我已阅读:Could I make a column in a table only allows one 'true' value and all other rows should be 'false' - 在 Postgres 中也可以使用同样的方法,但如果可能的话,我想要一个单表解决方案。
我有一个 logon_state 表:
CREATE TABLE logon_state (
username VARCHAR(20) references users,
region region NOT NULL,
channel channel NOT NULL,
ts TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
callsign VARCHAR(10) NOT NULL,
live BOOLEAN NOT NULL,
PRIMARY KEY (username, region, channel)
);
如何添加约束或唯一键,以便对于每个 region/channel 组合,只有一行可能具有 live 值 true 而无限数量的行可以具有 live false的值?
【问题讨论】: