De parser ondersteunt geen subquery op de plaats waar u deze probeert te gebruiken.
Hier is het fragment uit de MySQL-bron, van sql/sql_yacc.yy:
create_table_option:
. . .
| AUTO_INC opt_equal ulonglong_num
Wat u daar moet lezen, is dat de AUTO_INCREMENT
tabel optie accepteert alleen een enkel letterlijk getal, geen uitdrukking of een subquery of een variabele of iets anders. U kunt de AUTO_INCREMENT dus gewoon niet instellen in dezelfde instructie waarin u SELECT MAX(id)+1
doet .
Maar dat hoeft niet.
MySQL zal nooit een auto-increment id toewijzen minder dan de grootste waarde die momenteel in de tabel staat. Dus als je een tabel hebt met id-waarde 102, is de volgende toegewezen waarde minstens 103.
Je kunt zelfs proberen om AUTO_INCREMENT=50 expliciet in te stellen, maar dat wordt automatisch verhoogd naar MAX(id)+1.