Автоматическое присваивание уникальных значений идентификаторов

Задача
Необходимо создать возрастающую последовательность уникальных идентификаторов – целых чисел. Например, требуется присвоить уникальные идентификаторы пользователям, договорам или другим объектам при внесении их в базу данных.

Решение
В PEAR DB для получения следующего целого значения применяется функция DB::nextId() с именем последовательности:

$id = $dbh->nextId('user_ids');

Обсуждение
По умолчанию последовательность создается, если она еще не существует, и первому идентификатору в последовательности присваивается 1.

В следующем операторе INSERT можно использовать целое значение, возвращенное функцией nextId():

$id = $dbh->nextId('user_ids');
$dbh->query("INSERT INTO users (id,name) VALUES ($id,'david')");

Этот оператор вставляет запись в таблицу users с id, равным 1, и name, равным david. Чтобы предотвратить создание последовательности, если она не существует, передайте значение false в качестве второго аргумента в функцию nextId():

$id = $dbh->nextId('user_ids',false);
$dbh->query("INSERT INTO users (id,name) VALUES ($id,'david')");

Для создания последовательности вызовите функцию createSequence();
а для удаления последовательности – функцию dropSequence():
$dbh->createSequence('flowers');
$id = $dbh->nextId('flowers');
$dbh->dropSequence('flowers');

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

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Выполнение запросов к базе данных SQL
Извлечение строк без цикла
Кэширование запросов и результатов
Модификация данных в базе данных SQL
Определение количества строк, возвращенных запросом

Вернуться в раздел: PHP / 10. Доступ к базам данных