私はデータベースに関しては本当に初心者なので、どんなアドバイスも適用されます。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 &&);