我的数据库中有两个字段具有唯一键的约束。我需要让这两个字段是唯一的,因为我使用它来确定是否要插入重复项,而只是更新字段。 这是插入/更新它们的查询:
INSERT INTO quiz(player1, player2, array, email1, email2)
VALUES (:user1, :user2, :quests, :email1, :email2)
ON DUPLICATE KEY UPDATE player1=:user1, player2=:user2, array=:quests, email1=:email1, email2=:email2"
唯一字段是 player1
和 player2
。
这工作正常,但它确实计算了将值插入到 player1
和 player2
字段中的顺序。因此我希望将值插入到player1、player2 -> 例如user1
、user2
的处理方式与 user2
、user1
相同。是否可以在数据库中进行设置 - 或者我是否需要 PHP 中的其他函数进行更新?
最佳答案
我已经多次遇到这种情况,简短的答案是我认为您必须添加一些 PHP 代码来检查 user2, user1 记录是否已存在,然后再插入 user1, user2 记录。
<小时/>或者,您可以考虑将数据库更改为如下所示:
Matches Table
id
created_at
updated_at
Participants Table
id
user_id
match_id
created_at
updated_at
Users table
id
username
email
etc...
Quiz Table
id
match_id
etc...
乍一看,这似乎需要更多工作,但事实证明,从长远来看,它更容易使用,因为如果您计划进行更高级的查询,它将允许您更轻松地查询数据。然后,您可以对 user_id 和 match_id 执行唯一索引。如果您需要的只是快速而简单地完成它,请按照您已有的方式进行操作,只需添加一些 PHP 验证即可。如果您希望从长远来看能够正确完成并计划执行一些更高级的查询,则应该考虑更改表结构。
关于php - 尽管 MySQL 的顺序不同,但使 2 列唯一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30938549/