Member 13174280 Ответов: 2

Mysql alter table AUTO_INCREMENT = 0


При каждом изменении каталога я сохраняю имена файлов в таблице.
Сбросить таблицу и установить AUTO_INCRTEMENT = 0

В первый раз счетчик равен = 0
id = 0
id = 1
id = 2
...

В следующих случаях я опорожняю таблицу и устанавливаю AUTO_INCREMENT = 0 значение первого идентификатора всегда равно = 3

id = 3
id = 4
id = 5
....

tb_temporary - InnoDB в - utf8mb4 - utf8mb4_900_ai_ci
id = INT(11) - PK - NN - AI

Что я уже пробовал:

int Contatore = 0;
            Query = "ALTER TABLE tb_temporary AUTO_INCREMENT = @contatore";
            gesdb.AlterCounter(Query, conn, Contatore); 


public void AlterCounter(string Query, MySqlConnection MyConn2, int contatore)
       {
           try
           {
               MyConn2 = Connection;

               if (MyConn2.State != ConnectionState.Open)
               {
                   MyConn2.Open();
               }

               MySqlCommand cmd = new MySqlCommand(Query, MyConn2); //assegna MySqlCommand

               cmd.Parameters.AddWithValue("@contatore", contatore);

               //trs = MyConn2.BeginTransaction();
               //cmd.Transaction = trs;
               try
               {
                   cmd.ExecuteNonQuery();
                   //trs.Commit();
               }
               catch
               {
                   //trs.Rollback();
               }
           }
           catch
           {

           }
       }

2 Ответов

Рейтинг:
1

Sandeep Mewara

ALTER TABLE some_table AUTO_INCREMENT = 0
Цитата:
Как и MySQL 5.6, документация[^] теперь государства: Как для InnoDB, так и для MyISAM, если значение меньше или равно максимальному значению в данный момент в столбце AUTO_INCREMENT, то значение сбрасывается до текущего максимального значения столбца AUTO_INCREMENT плюс один.

Цитата:
Как Сбросить Столбец Автоинкремента MySQL. Сброс Номера Автоинкремента[^] : Обратите внимание, что вы не можете сбросить счетчик до значения, меньшего или равного любому из уже использованных значений

Будет сброшено значение auto_increment, чтобы быть следующим значением, основанным на самом высоком существующем значении в столбце auto_increment. Он не будет просто сброшен по умолчанию до 0, как вы ожидаете.


Рейтинг:
0

OriginalGriff

Вы можете только установить значение автоматического приращения больше, чем самое большое значение уже в таблице - если вы думаете об этом, это имеет полный смысл: если вы этого не сделали, то дублирование значений индекса становится высокой вероятностью, и это очень плохая идея.
Таким образом, при второй попытке наибольшее значение в таблице равно 2, и ваша попытка установить его равным нулю игнорируется. Вы можете установить его на 3 или больше, но не ниже этого.