使用 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(),它会为您提供一个适合您的领域的随机字符串,保证是唯一的,并且冲突的可能性很小。