Mysql
 sql >> Database >  >> RDS >> Mysql

Problema con MySql INSERT MAX()+1

Puoi usare qualcosa del genere:

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

Ma tale query può portare a una race condition. Assicurati di essere in una transazione e di bloccare la tabella degli utenti prima di eseguirla. Altrimenti potresti ritrovarti con due Bob con lo stesso numero.