Разработчику. Сборник рецептов PHP
Задавайте вопросы

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

Вернуться назад

Задача

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

Решение

В 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.

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования


Рейтинг Сайтов ДОСКИ.РУ