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

ændre auto_increment i samme tabel ved hjælp af underforespørgsel mysql

Parseren understøtter ikke en underforespørgsel på det sted, du forsøger at bruge den.

Her er uddraget fra MySQL-kilden, fra sql/sql_yacc.yy:

create_table_option:
    . . .
    | AUTO_INC opt_equal ulonglong_num

Hvad du bør læse der er, at AUTO_INCREMENT tabelindstillingen accepterer kun et enkelt bogstaveligt tal, ikke et udtryk eller en underforespørgsel eller en variabel eller noget andet. Så du kan simpelthen ikke indstille AUTO_INCREMENT i den samme sætning, som du gør SELECT MAX(id)+1 .

Men det behøver du ikke.

MySQL vil aldrig tildele et auto-increment id mindre end den største værdi i tabellen i øjeblikket. Så hvis du har en tabel med id-værdi 102, vil den næste tildelte værdi være mindst 103.

Du kan endda prøve at indstille AUTO_INCREMENT=50 eksplicit, men det øges automatisk til MAX(id)+1.



  1. 2 måder at få det korte månedsnavn fra en dato i MariaDB

  2. Hvordan skal jeg gemme en GUID i Oracle?

  3. Rails auto-tildelings-id, der allerede eksisterer

  4. SQL Server og Spectre/Meltdown Vulnerabilities