sql >> Database >  >> RDS >> Mysql

verander auto_increment binnen dezelfde tabel met behulp van subquery mysql

De parser ondersteunt geen subquery op de plaats waar u deze probeert te gebruiken.

Hier is het fragment uit de MySQL-bron, van sql/sql_yacc.yy:

create_table_option:
    . . .
    | AUTO_INC opt_equal ulonglong_num

Wat u daar moet lezen, is dat de AUTO_INCREMENT tabel optie accepteert alleen een enkel letterlijk getal, geen uitdrukking of een subquery of een variabele of iets anders. U kunt de AUTO_INCREMENT dus gewoon niet instellen in dezelfde instructie waarin u SELECT MAX(id)+1 doet .

Maar dat hoeft niet.

MySQL zal nooit een auto-increment id toewijzen minder dan de grootste waarde die momenteel in de tabel staat. Dus als je een tabel hebt met id-waarde 102, is de volgende toegewezen waarde minstens 103.

Je kunt zelfs proberen om AUTO_INCREMENT=50 expliciet in te stellen, maar dat wordt automatisch verhoogd naar MAX(id)+1.



  1. Een SQL Server Monitoring Tool kiezen die aan uw behoeften voldoet

  2. SQL Server - NULL opnemen met UNPIVOT

  3. Parallelle mysql-query's in php?

  4. Opmerking:niet-gedefinieerde variabele:db bij gebruik van PDO