如果重复,UUID_SHORT将重新生成

时间:2012-11-21 02:22:19

标签: php mysql pdo

我有这个问题:

$query = "INSERT INTO users (users_uuid, type_id) VALUES (UUID_SHORT(), :type_id)";

我的问题是,如果生成的UUID_SHORT()已经存在,有没有办法告诉MySQL在该查询中生成另一个UUID_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行“

这是什么意思?

0 个答案:

没有答案