gpt4 book ai didi

mysql - 即使在 MYSQL 表中互换时,如何使两行唯一?

转载 作者:行者123 更新时间:2023-11-29 05:02:33 25 4
gpt4 key购买 nike

id |  sender          | receiver
-------------------------------
1 | 1 | 12 <- case 1
2 | 12 | 1 <- case 2
3 | 1 | 2
4 | 3 | 1

我有一个包含以上内容的表格,senderreceiver 都是复合键,这意味着我不能在同一个位置两次使用它们,但是我怎样才能使确保发送方或接收方没有像上面案例 1 和 2 中标记的那样重复互换。

最佳答案

您可以将计算列与唯一索引一起使用:

create table mytable
(
id int not null auto_increment,
sender int not null,
receiver int not null,
key1 int as (least(sender,receiver)),
key2 int as (greatest(sender,receiver)),
primary key (id)
);

create unique index idx_mytable_unique on mytable(key1, key2);

然后

insert into mytable(sender, receiver) values (1,12);

-> 1 row inserted.

然后

insert into mytable(sender, receiver) values (12,1);

-> Duplicate entry '1-12' for key 'idx_mytable_unique'

演示:https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=a21e48498ff6c10007451109f8e07166

关于mysql - 即使在 MYSQL 表中互换时,如何使两行唯一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55295968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com