私はこのクエリを持っています:
$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 サーバーのバージョンに対応するマニュアルを参照して、near '(users_uuid) = VALUES(UUID_SHORT()) を使用する正しい構文を確認してください。 ' 行 1 で"
これは何を意味するのでしょうか?