当谈到数据库时,我是真正的初学者,所以任何建议都是适用的。在 PostgreSQL 中必须有一种结合UNIQUE
约束和约束的方法。EXCLUSION
. 下面我写的不正确。(在语法上是肯定的,在逻辑上也是可能的)
我正在努力实现以下目标:
- 单个身份验证器在给定时间可以属于 1 个用户 ID。(所以
UNIQUE
需要一个约束) - 但是身份验证器可以在不同的时间属于不同的 useridx (因此需要某种
EXCLUSION
约束) - 不同的时间意味着在validform和validuntil的区间之外。
我试过的:
ALTER TABLE authentication
ADD CONSTRAINT lenient_constraint UNIQUE (useridx, authenticator)
EXCLUDE USING gist(validfrom WITH =, validuntil WITH &&);