Parsern stöder inte en underfråga på den plats du försöker använda den.
Här är utdraget från MySQL-källan, från sql/sql_yacc.yy:
create_table_option:
. . .
| AUTO_INC opt_equal ulonglong_num
Det du bör läsa där är att AUTO_INCREMENT
tabellalternativet accepterar endast ett enda bokstavligt tal, inte ett uttryck eller en underfråga eller en variabel eller något annat. Så du kan helt enkelt inte ställa in AUTO_INCREMENT i samma programsats som du gör SELECT MAX(id)+1
.
Men du behöver inte.
MySQL kommer aldrig att tilldela ett auto-inkrement-id mindre än det största värdet för närvarande i tabellen. Så om du har en tabell med id-värde 102, kommer nästa värde som allokeras att vara minst 103.
Du kan till och med försöka ställa in AUTO_INCREMENT=50 explicit, men det kommer att ökas automatiskt till MAX(id)+1.