2015-01-02 1 views
0

Я не в состоянии сбросить значение auto_increment даже после внесения изменений после того, как со ссылкой на другую должностьКак сбросить значение AUTO_INCREMENT в MySQL

Я попытался:

ALTER TABLE tablename AUTO_INCREMENT = 101 

ALTER TABLE users AUTO_INCREMENT=1001; 

или, если вы еще не добавлены столбец ID, а также добавить его

ALTER TABLE users ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
ADD INDEX (id); 

Но до сих пор не работает

Проверьте это:

mysql> ALTER TABLE table2 ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
    -> ADD INDEX (id); 
Query OK, 5 rows affected (0.17 sec) 
Records: 5 Duplicates: 0 Warnings: 0 

mysql> select * from table2; 
+----------------+----+ 
| name   | id | 
+----------------+----+ 
| Abhilash Gupta | 1 | 
| John   | 2 | 
| Peter   | 3 | 
| Clarke   | 4 | 
| Virat   | 5 | 
+----------------+----+ 
5 rows in set (0.00 sec) 

mysql> ALTER TABLE table2 AUTO_INCREMENT=101; 
Query OK, 5 rows affected (0.25 sec) 
Records: 5 Duplicates: 0 Warnings: 0 

mysql> select * from table2; 
+----------------+----+ 
| name   | id | 
+----------------+----+ 
| Abhilash Gupta | 1 | 
| John   | 2 | 
| Peter   | 3 | 
| Clarke   | 4 | 
| Virat   | 5 | 
+----------------+----+ 
5 rows in set (0.00 sec) 

mysql> 

Я хочу, чтобы значение идентификатора для запуска из 101. Заранее спасибо

+0

В следующей строке, которую вы добавите, будет 'id = 101'. Изменение автоматического приращения не изменяет существующие строки, для этого вам нужно использовать инструкцию 'UPDATE'. – Barmar

+0

, поэтому мне нужно обновить все строки вручную? –

+0

Нет, вы можете использовать запрос в своем ответе. – Barmar

ответ

2

Если вы хотите изменить существующие идентификаторы, чтобы начать с 101 используйте:

UPDATE table2 
SET id = id + 100; 

Параметр auto_increment используется для добавления идентификатора следующей строки, который не влияет на существующие строки.

+0

ОК, спасибо большое :) –

+0

Кроме того, если 'id' ссылается как внешний ключ из других таблиц, вам может потребоваться сначала установить [' ON UPDATE CASCADE'] (http://stackoverflow.com/questions/ 1481476/при использовании-on-update-cascade), чтобы обеспечить целостность ссылочной целостности – StuartLC

0

Перейдите по этой ссылке для ссылки на AUTO INCREMENT

Теперь то, что вы делаете, я думаю, что правильно, но эти изменения не отражаются, потому что вы не пытались ввести новую строку в базу данных. Команда Alter изменяет значение AUTO INCREMENTS, но это будет отображаться только в следующей вставке в базу данных. Это не повлияет на данные, которые уже присутствуют в ТАБЛИЦЕ. Попробуйте ввести новую строку в базу данных и проверьте, не изменилось ли значение ID.
Если нет, то выведите результат после ввода этой строки.