簡體   English   中英

兩列的唯一約束

[英]Unique constraint across two columns

我有一個名為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

我怎么做? 我嘗試做同樣的聲明,但是字段顛倒了,但是沒有用...有什么想法嗎?

您可以使用觸發器來確保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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM