php – MySQL插入独特的技术
我有一个php应用程序,它将数据插入
MySQL,其中包含一个随机生成的唯一值.该字符串将具有大约10亿种可能性,任何时候可能不超过1或2百万个条目.从本质上讲,数据库中不存在大多数组合.
我试图找到最便宜的方法来确保插入的唯一值.具体来说,我的两个选择是: >拥有一个生成此唯一ID的函数.在每一代中,测试数据库中是否存在该值,如果是,则重新生成,如果否,则返回值. 依赖MySQL错误重新尝试插入是不是一个坏主意?正如我所看到的,该值可能是唯一的,似乎初始(使用技术1)是不必要的. 编辑#1 我还应该提到,值必须是6个字符长度的字符串,由大写字母和/或数字组成.它们也不能增量 – 它们应该是随机的. 编辑#2 作为旁注,我正在尝试为难以猜测的礼券创建兑换代码.使用数字和字母为每个字符创建36种可能性,而不是仅为数字为10或仅为字母为26. 这是我创建的解决方案的精简版本.在表中输入的第一个值是主键,它是自动递增的.如果插入成功,affected_rows()将等于1: $code = $build_code(); while ((INSERT INTO certificates VALUES ('',$code) ON DUPLICATE KEY UPDATE pk = pk) && affected_rows() == 0) $code = $build_code(); 解决方法
不.如果你愿意,可以继续使用它.事实上,许多人认为如果你检查它是否存在,那么插入是安全的.但是除非你锁定表格,否则另一个进程总是可以插入并获取id. 因此,如果它适合您的目的,请继续生成随机ID.只需确保您测试代码,以便正确处理重复.可能对记录重复只是有用,以确保您对unlikey dups的发生方式的假设是正确的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |