Mysql
 sql >> Database >  >> RDS >> Mysql

cambia auto_increment all'interno della stessa tabella usando la sottoquery mysql

Il parser non supporta una sottoquery nel punto in cui stai tentando di utilizzarla.

Ecco l'estratto dal sorgente MySQL, da sql/sql_yacc.yy:

create_table_option:
    . . .
    | AUTO_INC opt_equal ulonglong_num

Quello che dovresti leggere lì è che il AUTO_INCREMENT l'opzione table accetta solo un singolo numero letterale, non un'espressione o una sottoquery o una variabile o qualsiasi altra cosa. Quindi semplicemente non puoi impostare AUTO_INCREMENT nella stessa istruzione in cui fai SELECT MAX(id)+1 .

Ma non è necessario.

MySQL non assegnerà mai un ID di incremento automatico minore di il valore più grande attualmente nella tabella. Quindi, se hai una tabella con valore id 102, il prossimo valore allocato sarà almeno 103.

Puoi anche provare a impostare AUTO_INCREMENT=50 in modo esplicito, ma questo verrà aumentato automaticamente a MAX(id)+1.