我有这个查询:
$query = "INSERT INTO users (users_uuid, type_id) VALUES (UUID_SHORT(), :type_id)";
我的问题是,如果UUID_SHORT()
生成的已经存在,有没有办法告诉 MySQLUUID_SHORT()
在该查询中生成另一个?我现在的想法是捕获返回错误响应,然后再次执行查询,我发现这效率低下。
基于@eicto 评论,我阅读ON DUPLICATE KEY UPDATE
然后尝试重建我的查询,我实现了一个新查询:
$query = "INSERT INTO users (users_uuid, type_id) VALUES (UUID_SHORT(), :type_id) ON DUPLICATE KEY UPDATE (users_uuid) = VALUES(UUID_SHORT())";
但是,我在日志中收到一条错误消息:
“SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取在 '(users_uuid) = VALUES(UUID_SHORT()) 附近使用的正确语法'在第 1 行"
这是什么意思?