Mysql
 sql >> Base de données >  >> RDS >> Mysql

changer auto_increment dans la même table en utilisant la sous-requête mysql

L'analyseur ne prend pas en charge une sous-requête à l'endroit où vous essayez de l'utiliser.

Voici l'extrait de la source MySQL, de sql/sql_yacc.yy :

create_table_option:
    . . .
    | AUTO_INC opt_equal ulonglong_num

Ce que vous devez y lire, c'est que le AUTO_INCREMENT L'option de table n'accepte qu'un seul nombre littéral, pas une expression ou une sous-requête ou une variable ou quoi que ce soit d'autre. Donc, vous ne pouvez tout simplement pas définir AUTO_INCREMENT dans la même instruction dans laquelle vous faites SELECT MAX(id)+1 .

Mais vous n'êtes pas obligé.

MySQL n'allouera jamais un identifiant d'auto-incrémentation inférieur à la plus grande valeur actuellement dans le tableau. Donc, si vous avez une table avec la valeur id 102, la prochaine valeur allouée sera au moins 103.

Vous pouvez même essayer de définir AUTO_INCREMENT=50 explicitement, mais cela sera automatiquement augmenté à MAX(id)+1.