1

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

我怎么做?我尝试做同样的声明,但字段颠倒了,但它没有用......有什么想法吗?

4

1 回答 1

2

您可以使用触发器来确保user_id <= friend_id具有唯一约束的 this 将实现您想要的。您将需要这样的插入和更新触发器:

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

例子

于 2012-12-16T23:17:59.527 回答