gpt4 book ai didi

mysql - 两列组合的双向唯一键约束

转载 作者:可可西里 更新时间:2023-11-01 07:02:29 26 4
gpt4 key购买 nike

我在 MySQL 中有下表列。

id
user_primary_email
user_secondary_email

我想使列 user_primary_emailuser_secondary_email 的组合唯一,我可以通过使用 UNIQUE KEY unique_key_name (user_primary_email, user_secondary_email) 实现

上面添加的唯一键约束将帮助我实现以下场景,或者更确切地说,只需向单个列本身添加一个唯一键。

user_primary_email = 'xyz@gmail.com' AND user_secondary_email = 'pqr@gmail.com'
user_primary_email = 'xyz@gmail.com' AND user_secondary_email = 'pqr@gmail.com' //This will not be allowed to enter due to unique key constraint

现在我面临的问题是相同的组合不应该被允许以相反的方式添加,如下所述。

user_primary_email = 'pqr@gmail.com' AND user_secondary_email = 'xyz@gmail.com' //This should not be allowed to add since already same email id combination added once

id | user_primary_email | user_secondary_email
-------------------------------------------------------
1 | xyz@gmail.com | pqr@gmail.com
-------------------------------------------------------
2 | pqr@gmail.com | xyz@gmail.com
-------------------------------------------------------

在上述情况下,在插入 row id 2 期间它应该抛出错误,因为这两个电子邮件 id 组合已在 row id 1 中使用。

任何帮助都会很棒。

最佳答案

在任何 MariaDB 中:

CREATE TABLE `t` (
`id` int(11) NOT NULL,
`user_primary_email` varchar(64) DEFAULT NULL,
`user_secondary_email` varchar(64) DEFAULT NULL,
`mycheck` varchar(128) AS (IF(user_primary_email<user_secondary_email,CONCAT(user_primary_email,user_secondary_email),CONCAT(user_secondary_email,user_primary_email))) PERSISTENT,
PRIMARY KEY (`id`),
UNIQUE KEY `mycheck` (`mycheck`)
);

MariaDB [test]> insert into t values (1,'a','b',null);
Query OK, 1 row affected (0.03 sec)

MariaDB [test]> insert into t values (2,'b','a',null);
ERROR 1062 (23000): Duplicate entry 'ab' for key 'mycheck'

关于mysql - 两列组合的双向唯一键约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41040301/

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