我有一个名为friends的表,结构如下:
id
user_id
friend_id
我希望这些行是唯一的,例如:
1, 6, 12
2, 6, 12
会破裂!我用ALTER TABLE friends ADD UNIQUE INDEX user_id_friend_id (user_id, friend_id);
但我也希望以下不可能
1, 6, 12
2, 12, 6
我该怎么做?我尝试做同样的陈述,但是字段颠倒但是它没有用......有什么想法吗?
答案 0 :(得分:1)
您可以使用触发器来确保user_id <= friend_id
,这具有唯一约束将实现您想要的。你需要一个插入和更新触发器,如下所示:
Create Trigger
Friends_ins_check
Before Insert On
Friends
For Each Row
Begin
If new.user_id > new.friend_id Then
Set @temp = new.user_id;
Set new.user_id = new.friend_id;
Set new.friend_id = @temp;
End If;
End