两列之间的唯一约束

时间:2012-12-16 22:52:17

标签: mysql sql

我有一个名为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

我该怎么做?我尝试做同样的陈述,但是字段颠倒但是它没有用......有什么想法吗?

1 个答案:

答案 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

Example