2013-08-23 3 views
0

У меня есть форма, из которой я вставляю данные в mysql, работает отлично. Но когда я удаляю некоторые данные из mysql и вставленные значения в базу данных снова, значение автоинкремента начинается с предыдущего значения строки. Forexample:Сброс значения поля автоинкремента mysql после удаления из php?

Если я 1,2,3,4,5, как идентификаторы в mydatabse и если я удалить 4 и 5 идентификаторы из базы данных и начал вставлять следующие данные из PHP. то id's исходит от 6 .... Но мне нужно получить id как 4. can any one дают предложения. Спасибо заранее.

+1

Идентификаторы есть ** нет * * имея в виду. Нет смысла пытаться сделать их «бесцельными». Почему вы считаете, что вам нужны «свободные пробелы»? –

+1

Duplicate: http://stackoverflow.com/q/740358/829533 – zzlalani

ответ

1

Боюсь, что MySQL не позволяет вам «перезагрузить» AUTO_INCREMENT таких полей. Если вам нужно это поведение, вы должны прекратить использование AUTO_INCREMENT и генерировать свои идентификаторы вручную.

0

Auto increment не гарантирует и не гарантирует непрерывную последовательность.

Вы можете осуществить это самостоятельно, как "SELECT MAX(ID) + 1 FROM MYTABLE;"

Но имейте в виду: Вы совершите небольшое, но заметное падение производительности.

  1. Если вы работаете обновления одновременно вы рискуете тупики
  2. (опять же, если вы работаете обновления одновременно), вы рискуете с двумя вставками с тем же ключом.

Вы также можете реализовать это, запустив собственный счетчик в отдельной таблице. У вас должна быть логика программы, чтобы уменьшить ее корректно при удалении, и снова вы получите высокую производительность и риск тупика, поскольку «счетчик» станет предметом спора.

0

Вы не должны играть с AUTO_INCREMENT значением в производственной среде, чтобы MySQL заботился о своей ценности для вас.

Если вам нужно знать, сколько строк у вас есть вы можете использовать

SELECT COUNT(id) FROM tbl; 

Во всяком случае, если вы действительно хотите, чтобы изменить его значение синтаксис является следующим:

ALTER TABLE tbl AUTO_INCREMENT=101; 
Смежные вопросы