php/mysql 防止多列上的重复条目

标签 php mysql duplicates

我想提出一个标准做法来防止任何表在重要的地方出现重复。在大多数情况下,重复项是变量的组合而不是一个。我的主键只是每个字段的唯一 ID,因此我无法使用它们。我一直在做的是首先查询表,然后如果相关组合的行数为 0,则进行插入。但是,我读过应该可以在多个字段上设置唯一键以强制唯一性。 INSERT IGNORE 听起来是一个很好的可能性,但是,我需要它忽略多个列。

举个例子,对于字段 follower 和 followed,表中可以有多个 follower 和 followed,但只能是两者的组合。

任何人都可以建议语法首先在多个字段上创建唯一键,然后执行 SQL 插入查询以防止重复吗?非常感谢。

最佳答案

您可以简单地在这些列上创建多列索引并强制执行唯一性:请参阅 MySQL 手册:http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html

例如,在包含 id(唯一主键)、colAcolB 列的表中,您可以运行:

ALTER TABLE table ADD UNIQUE KEY (colA,colB)

就是这样:任何导致这两列中出现重复条目​​的 INSERT 现在都将返回 MySQL 错误,而不是继续执行。如果您使用 INSERT IGNORE,如果执行它会违反此唯一约束,则不会引发 MySQL 错误,并且您的 INSERT 语句将被悄悄忽略。

关于php/mysql 防止多列上的重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57938642/

相关文章:

php - LOCK TABLES 会导致 InnoDB 中的死锁吗?

c# - 从包含带有数组元素的类的列表中删除重复项

MySQL 插入新行并忽略现有行,基于许多列

php - 查询时逻辑要求、结构困惑

php - 在我的 Symfony 命令中调用 repo 方法

MySQL - 从两个表中选择记录,但前提是不存在重复项

mysql - 如果我有重复的 'WHERE' 字段,如何更新 MySQL 条目?

php - 将 <script></script> 用 php 保存到 mysql 数据库中

php - 断言页面上有一定数量的元素

mysql - 是否可以在没有连接的情况下按 count(distinct) 进行分组?