0

我有这个查询:

$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 行"

这是什么意思?

4

0 回答 0