0

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

1 に答える 1

0

単一のaltertableステートメントでそれを実行できるかどうかを尋ねている場合、答えはノーです。同じテーブルに対してそれを行うことができるかどうかを尋ねている場合、答えはイエスです。下記参照:

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 に答える