mysql - 具有唯一约束的批量插入语句

标签 mysql sql bulkinsert unique-constraint

我正在编写需要生成唯一代码的 PHP 脚本。这些代码由管理员用户生成,一次 100K。我有一个生成代码的算法,但重复项进入混合的可能性很小——大约 0.001% 的可能性,但它仍然可能导致问题。

我希望运行批量插入语句:

INSERT INTO coupons ( 'code' ) VALUES ('code1'),('code2'),('code3');

这将包含 100K 个代码。我想知道的是,如果它们都是唯一的,除了可以说 code100,插入将在该代码处停止,还是会继续进行其余的插入,并通过警告让我知道。

如果它在第一次复制时最终失败,我该怎么办?性能不是一个大问题,因为它是一个管理区域,我可以将流程分拆直到完成。

最佳答案

如果在批量插入中发现重复项,整个 插入将失败——而不仅仅是重复项之后的所有内容。如果性能不是问题并且丢失一些插入也没关系,您可以单独执行每个 INSERT 语句。否则,更新您的算法以在生成代码时检查重复项。

关于mysql - 具有唯一约束的批量插入语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16526539/

相关文章:

mysql - Sql 查询使用 SQL 查询将第二行数据显示到第一行,将第三行数据显示到第二行,依此类推

mysql - x 和 y 值之间有 2 列 mysql

sql - In out 参数在 Mysql 中无法正常工作

php PDO使用占位符插入批处理多行

php - 从 symfony2 学说集合中加载相关实体

mysql自连接

php批量上传的最大执行时间问题

c# - 从 Guid 获取与 SQL 兼容的字符串的更快方法

mysql - SQL消除带有时间戳的重复行?

sql - SQL Server 中的 FIFO 查询