Как сгенерировать следующий номер для базы данных, управляемой php mysql - PullRequest
2 голосов
/ 05 января 2012

У меня есть таблица employees, которая содержит данные о сотрудниках фирмы.

Каждому присвоен уникальный серийный номер.Каждый раз, когда мы добавляем нового сотрудника, он должен отображать серийный номер в форме добавления, который на один номер больше серийного номера последнего введенного сотрудника.

Например, база данных содержит 12 сотрудников.Серийный номер последней записи 12.Когда я пытаюсь добавить нового сотрудника, ему автоматически присваивается серийный номер 13.Поэтому мне не нужно вводить серийный номер.Как я могу это сделать?

Ответы [ 4 ]

6 голосов
/ 05 января 2012

Вы не можете точно предсказать следующий идентификатор auto_increment, даже когда запрашиваете текущее состояние базы данных (кроме того, что только один пользователь использует приложение).Пример: вы открываете форму, извлекаете следующий идентификатор auto_increment из БД и отображаете 13 в качестве следующего прогнозируемого значения.Тем временем другой пользователь открывает форму и сохраняет ее быстрее, чем вы.Реальный идентификатор записи другого пользователя будет 13, ваш 14.

Если вы действительно хотите отобразить использованный идентификатор в своей форме, вам нужно сделать какое-то распределение своей записи (например, создать пустуюзапись об открытии формы и использовании ее ID).С помощью какого-либо поля состояния или обязательного поля вы можете фильтровать эти пустые записи в вашем приложении до их заполнения и периодически очищать незавершенные записи.Единственным недостатком является то, что он, вероятно, даст вам непрерывные идентификаторы, если пользователи откроют форму, не заполнив ее (например, 14, 15, 18, 20, ...).

3 голосов
/ 05 января 2012

Если для серийного номера установлено значение auto_increment, вы можете заранее найти следующее значение auto_increment, используя:

$sql = "SHOW TABLE STATUS LIKE table_name";
$r = mysql_query($sql);

$row = mysql_fetch_assoc($r);
$next_increment = $row['Auto_increment'];

Где table_name - это имя вашей таблицы.

0 голосов
/ 07 января 2012
for employee_id use auto increment
0 голосов
/ 05 января 2012

Установите серийный идентификатор на AUTO_INCREMENT

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

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

...