Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

altere auto_increment dentro da mesma tabela usando a subconsulta mysql


O analisador não oferece suporte a uma subconsulta no local em que você está tentando usá-lo.

Aqui está o trecho da fonte do MySQL, de sql/sql_yacc.yy:
create_table_option:
    . . .
    | AUTO_INC opt_equal ulonglong_num

O que você deve ler lá é que o AUTO_INCREMENT A opção table aceita apenas um único número literal, não uma expressão ou uma subconsulta ou uma variável ou qualquer outra coisa. Portanto, você simplesmente não pode definir o AUTO_INCREMENT na mesma instrução em que SELECT MAX(id)+1 .

Mas você não precisa.

O MySQL nunca alocará um id de incremento automático menor que o maior valor atualmente na tabela. Portanto, se você tiver uma tabela com valor de id 102, o próximo valor alocado será pelo menos 103.

Você pode até tentar definir AUTO_INCREMENT=50 explicitamente, mas isso será aumentado automaticamente para MAX(id)+1.