Mysql

如何強制我的複合鍵列在 MySQL 中彼此不相等?

  • August 10, 2020

我有一個數據透視表,其中有一個由引用同一個表的兩列組成的複合鍵。列是requester_id並且addressee_id它們都引用表中的id欄位users。我正在努力確保不會發生這樣的事情:

requester_id   addressee_id   created_at
1              1              2020-08-09 18:40:23

我還添加了一個索引表達式,以確保也只能有一對唯一的 ID:

alter table `user_relationships` 
add unique index `unique_relationships_index`
((least(requester_id,addressee_id)), (greatest(requester_id,addressee_id)))

避免擁有1|2and 2|1

MySQL-8.0.16 強制檢查約束

alter table user_relationships add check (requester_id <> addressee_id)

然後:

insert into user_relationships values (3,3,NOW())
檢查約束“user_relationships_chk_1”被違反。

參考:小提琴

引用自:https://dba.stackexchange.com/questions/273479