fad*_*bee 2 postgresql constraints
我读过:我可以在表中创建一列仅允许一个“真”值,而所有其他行应该为“假” - 同样可以在 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)
);
Run Code Online (Sandbox Code Playgroud)
如何添加约束或唯一键,使得对于每个region/channel组合,只有一行的live值可以为true,而无限数量的行可以有的live值false?
小智 5
这可以通过部分唯一索引来完成:
create unique index on logon_state (region, chanel)
where live;
Run Code Online (Sandbox Code Playgroud)
这假设域(或类型)region和chanel可以正确进行比较。如果这些是具有多个字段的记录类型,则这可能不起作用。
| 归档时间: |
|
| 查看次数: |
2003 次 |
| 最近记录: |