2017-10-13 5 views
1

一意性制約の文脈では、特定の列に特定の値(たとえば "false")がある場合、行を一意とみなす方法があります。一例として、与えられた列がPostgreSQLの述部と一致するときに一意の行を考慮する

は、

これが許可されます:

id | user| location| active 
----+-----+----------+---------- 
    1 | 1 | West LA | f 
    2 | 1 | West LA | f 
    3 | 1 | West LA | t 
    4 | 2 | West LA | t 

が、これはないでしょう:

id | user| location| active 
----+-----+----------+---------- 
    1 | 1 | West LA | f 
    2 | 1 | West LA | t 
    3 | 1 | West LA | t 
    4 | 2 | West LA | t 

これを実現するために、私はそれが可能であるかどうかを知りたいです次のような一意性の制約を設けます。
UNIQUE(user, location) あなたはほぼありました

+0

をあなたが共存すると、例外を与える行のサンプルができ、データのサンプルを提供してくださいでしょう..? –

+1

@ VaoTsun問題ありません!うまくいけば、それは今より明らかです。 – jpswain

+1

はい - ありがとうございます。私はまだ日の起源を得ることはできませんが、おそらくすべての列をリストしていませんか?とにかくあなたはすでに答えがあります。 –

答えて

1

- 部分(別名「フィルタ」)一意のインデックスを作成:

create unique index on the_table (day, location) 
    where active; 
関連する問題