質問するログイン新規登録

回答編集履歴

2

推敲

2018/09/26 03:48

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -3,7 +3,7 @@
3
3
  例えば、以下のようなインデックスをユニーク属性で作成します。
4
4
  ```SQL
5
5
  create unique index Invitation_unique on Invitation(
6
- greatest(inviter_id, invitee_id), least(inviter_id, invitee_id)
6
+ least(inviter_id, invitee_id), greatest(inviter_id, invitee_id)
7
7
  );
8
8
  ```
9
9
  若しくは、テーブル構造を変更し、IDの小さいものを最初に登録というルールを持たせた上で、そのIDが招待者なのか被招待者なのかの識別を持たせる、というようなことが考えられます。

1

追記

2018/09/26 03:48

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,4 +1,9 @@
1
1
  DBMSには項目の組み合わせという概念はありません。順列のみです。
2
2
  ですので、自前で制約を作るしか無いと思います。
3
-
3
+ 例えば、以下のようなインデックスをユニーク属性で作成します。
4
+ ```SQL
5
+ create unique index Invitation_unique on Invitation(
6
+ greatest(inviter_id, invitee_id), least(inviter_id, invitee_id)
7
+ );
8
+ ```
4
9
  若しくは、テーブル構造を変更し、IDの小さいものを最初に登録というルールを持たせた上で、そのIDが招待者なのか被招待者なのかの識別を持たせる、というようなことが考えられます。