Mysql
 sql >> Base de données >  >> RDS >> Mysql

Problème avec MySql INSERT MAX()+1

Vous pouvez utiliser quelque chose comme ceci :

INSERT INTO users (user_id, name)
SELECT 1 + coalesce((SELECT max(user_id) FROM users WHERE name='Bob'), 0), 'Bob';

Mais une telle requête peut conduire à une condition de concurrence. Assurez-vous que vous êtes dans une transaction et que vous verrouillez la table des utilisateurs avant de l'exécuter. Sinon, vous pourriez vous retrouver avec deux Bobs avec le même numéro.