使用 MySQL UNI 键将随机字符串插入字段
Insert random string into field with MySQL UNI key
任务是用 N 行随机唯一数据填充 table。
我有下一个MySQLtable结构:
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(20) | NO | UNI | NULL | |
+----------+--------------+------+-----+---------+----------------+
用户名字段为字符串类型,但如果脚本将插入数字则没问题。
INSERT IGNORE
有一个肮脏的解决方案,可以生成 1000 行无限循环的随机行。
INSERT IGNORE INTO table (id,username) VALUES ('', 1 + ceil(rand() * 1000));
另外,我可以使用ON DUPLICATE KEY
结构,但是这2个方案都不行。
我想进行查询,生成唯一的用户名,该用户名将是唯一的,将从第一次插入。
所以,我告诉脚本添加 1m 的行,它会插入 1m 的唯一数据,没有任何不当之处。
有什么想法吗?谢谢。
您可以使用 UUID(),它会为您提供一个适合您的领域的随机字符串,保证是唯一的,并且冲突的可能性很小。
任务是用 N 行随机唯一数据填充 table。
我有下一个MySQLtable结构:
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(20) | NO | UNI | NULL | |
+----------+--------------+------+-----+---------+----------------+
用户名字段为字符串类型,但如果脚本将插入数字则没问题。
INSERT IGNORE
有一个肮脏的解决方案,可以生成 1000 行无限循环的随机行。
INSERT IGNORE INTO table (id,username) VALUES ('', 1 + ceil(rand() * 1000));
另外,我可以使用ON DUPLICATE KEY
结构,但是这2个方案都不行。
我想进行查询,生成唯一的用户名,该用户名将是唯一的,将从第一次插入。
所以,我告诉脚本添加 1m 的行,它会插入 1m 的唯一数据,没有任何不当之处。
有什么想法吗?谢谢。
您可以使用 UUID(),它会为您提供一个适合您的领域的随机字符串,保证是唯一的,并且冲突的可能性很小。