Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Problem mit MySql INSERT MAX()+1

Sie können so etwas verwenden:

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

Eine solche Abfrage kann jedoch zu einer Racebedingung führen. Stellen Sie sicher, dass Sie sich in einer Transaktion befinden und die Benutzertabelle sperren, bevor Sie sie ausführen. Andernfalls könnten Sie am Ende zwei Bobs mit der gleichen Nummer haben.