Der Parser unterstützt keine Unterabfrage an der Stelle, an der Sie sie verwenden möchten.
Hier ist der Auszug aus der MySQL-Quelle, aus sql/sql_yacc.yy:
create_table_option:
. . .
| AUTO_INC opt_equal ulonglong_num
Was Sie dort lesen sollten, ist, dass der AUTO_INCREMENT
Die Tabellenoption akzeptiert nur eine einzige Literalzahl, keinen Ausdruck oder eine Unterabfrage oder eine Variable oder irgendetwas anderes. Sie können also AUTO_INCREMENT einfach nicht in derselben Anweisung setzen, in der Sie SELECT MAX(id)+1
ausführen .
Muss es aber nicht.
MySQL wird niemals eine Auto-Increment-ID zuweisen, die kleiner als ist der derzeit größte Wert in der Tabelle. Wenn Sie also eine Tabelle mit dem ID-Wert 102 haben, ist der nächste zugewiesene Wert mindestens 103.
Sie können sogar versuchen, AUTO_INCREMENT=50 explizit zu setzen, aber das wird automatisch auf MAX(id)+1 erhöht.