私はデータベースに関しては本当に初心者なので、どんなアドバイスも適用されます。PostgreSQLでUNIQUE
制約と制約を組み合わせる方法が必要です。EXCLUSION
。私が書いた以下のものは正しくありません。(構文的には確かで、論理的にも可能です)
私は次のことを達成しようとしています:
- 1つのオーセンティケーターが一度に1つのuseridxに属することができます。(したがって、
UNIQUE
制約が必要です) - ただし、オーセンティケーターは異なる時間に異なるuseridxに属することができます(したがって、何らかの
EXCLUSION
制約が必要です) - 異なる時間とは、validformの間隔外、およびvaliduntilを意味します。
私が試したこと:
ALTER TABLE authentication
ADD CONSTRAINT lenient_constraint UNIQUE (useridx, authenticator)
EXCLUDE USING gist(validfrom WITH =, validuntil WITH &&);