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

Ändern Sie auto_increment innerhalb derselben Tabelle mit der Unterabfrage mysql

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.