0

当谈到数据库时,我是真正的初学者,所以任何建议都是适用的。在 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 &&);
4

1 回答 1

0

如果您问是否可以在单个 alter table 语句中执行此操作,答案是否定的。如果您问是否可以针对同一张桌子进行操作,答案是肯定的。见下文:

mydb# alter table test add unique(test);
NOTICE:  ALTER TABLE / ADD UNIQUE will create implicit index "test_test_key" for table "test"
ALTER TABLE
mydb# alter table test add exclude (test with =);
NOTICE:  ALTER TABLE / ADD EXCLUDE will create implicit index "test_test_excl" for table "test"
ALTER TABLE
于 2013-04-22T06:44:01.567 回答