PEAR DB_common :: nextId () резервировать следующий идентификатор? - PullRequest
0 голосов
/ 01 октября 2010

Я заметил, что во время тестирования база данных будет перепрыгивать число в индексе, если кто-то еще вставит запись, пока я произвел nextId ().Выполняет ли эта команда резервирование следующего идентификатора?

Пример:

Пользователь 1:

$nextId = $db->nextId('id');
echo "Next id: ".$nextId."<br />";

Результаты: 1234, но вставка не происходит, поскольку я просто получаюnextId ()

Пользователь 2: (сразу после пользователя 1)

$rs = $db->query(INSERT NEW RECORD HERE...);

id = 1235, вставлена ​​новая запись

Теперь я иду на запрос к БД вручную иЯ вижу идентификаторы записей 1233 и 1235, но 1234, для которого я сделал nextId (), отсутствует в БД.

Это ожидаемые результаты?

1 Ответ

1 голос
/ 01 октября 2010

Это ожидаемые результаты?

Да. Это ожидаемое поведение.

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

Из руководства :

Возвращает следующий доступный номер из последовательность. Последовательность автоматически увеличивается каждый раз этот метод называется.

...