Mysql
 sql >> Baza danych >  >> RDS >> Mysql

zmień auto_increment w tej samej tabeli za pomocą podzapytania mysql

Parser nie obsługuje podzapytania w miejscu, w którym próbujesz go użyć.

Oto fragment źródła MySQL, z sql/sql_yacc.yy:

create_table_option:
    . . .
    | AUTO_INC opt_equal ulonglong_num

Powinieneś tam przeczytać, że AUTO_INCREMENT Opcja table akceptuje tylko pojedynczą liczbę literału, a nie wyrażenie, podzapytanie, zmienną lub cokolwiek innego. Więc po prostu nie możesz ustawić AUTO_INCREMENT w tej samej instrukcji, w której robisz SELECT MAX(id)+1 .

Ale nie musisz.

MySQL nigdy nie przydzieli identyfikatora automatycznego przyrostu mniejszego niż największa obecnie wartość w tabeli. Więc jeśli masz tabelę o wartości identyfikatora 102, następną przydzieloną wartością będzie co najmniej 103.

Możesz nawet spróbować jawnie ustawić AUTO_INCREMENT=50, ale zostanie to automatycznie zwiększone do MAX(id)+1.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zapytanie mysqli zwraca tylko pierwszy wiersz

  2. Wycofanie MySQL w przypadku transakcji z utraconym/rozłączonym połączeniem

  3. Dlaczego otrzymuję wyjątek serwera MySQL w Django?

  4. Jak stworzyć oparte na bazie danych wielopoziomowe menu nawigacyjne za pomocą Laravel

  5. Jak działają indeksy MySQL?