回答編集履歴

2

推敲

2018/09/26 03:48

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  create unique index Invitation_unique on Invitation(
10
10
 
11
- greatest(inviter_id, invitee_id), least(inviter_id, invitee_id)
11
+ least(inviter_id, invitee_id), greatest(inviter_id, invitee_id)
12
12
 
13
13
  );
14
14
 

1

追記

2018/09/26 03:48

投稿

sazi
sazi

スコア25195

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