Baton
Новичок
PEAR DB. Генерация последовательностей.
Здравствуйте.
Пишу цмс-ку и решил использовать PEAR DB . У меня есть достаточный опыт работы с mysql, все проекты которые я когда-либо писал, были заточены под эту базу. Как известно, в мускуле можно задать автоинкрементные первичные поля, программист может не думать о предварительной генерации первичных ключей. После запроса, при желании можно узнать последней добавленный ключ с помощью функции mysql_inserted_id()
Для меня было необычным, что автоинкрементные первичные поля - это фишка мускуля, в других базах надо заранее создать ключ и указывать его в запросе.
Если использовать PEAR DB, то нужно написать что-то типо этого:
$nextId=$db->nextId('tableName');
$q="INSERT INTO tableName
(id,data)
VALUES(".$nextId.",'".$data."')";
$db->query();
Вопрос у меня следующий: как работает $db->nextId('tableName') ? Создаётся последовательность, которая где-то хранится. Как и где хранится последовательность? Если я перегружу скрипт, то полученные ключи повторяться не будут, тоесть предыдущее состояние где-то сохранилось. Меня смутило то, что при первом запуске похожего скрипта, отсчёт начался с 1, в то время как таблица уже содержала несколько записей, и первичное поле не могло быть равным 1.
Данный вопрос меня интересует с точки зрения переносимости. Допустим я слил дамп базы, скопировал скрипты, и перенёс на другой сервер. С какого номера в данном случае буду генерироваться ключи, снова с единицы? Как быть, может я чего-то не понял?
ЗЫ: сильно не пинайте
Здравствуйте.
Пишу цмс-ку и решил использовать PEAR DB . У меня есть достаточный опыт работы с mysql, все проекты которые я когда-либо писал, были заточены под эту базу. Как известно, в мускуле можно задать автоинкрементные первичные поля, программист может не думать о предварительной генерации первичных ключей. После запроса, при желании можно узнать последней добавленный ключ с помощью функции mysql_inserted_id()
Для меня было необычным, что автоинкрементные первичные поля - это фишка мускуля, в других базах надо заранее создать ключ и указывать его в запросе.
Если использовать PEAR DB, то нужно написать что-то типо этого:
$nextId=$db->nextId('tableName');
$q="INSERT INTO tableName
(id,data)
VALUES(".$nextId.",'".$data."')";
$db->query();
Вопрос у меня следующий: как работает $db->nextId('tableName') ? Создаётся последовательность, которая где-то хранится. Как и где хранится последовательность? Если я перегружу скрипт, то полученные ключи повторяться не будут, тоесть предыдущее состояние где-то сохранилось. Меня смутило то, что при первом запуске похожего скрипта, отсчёт начался с 1, в то время как таблица уже содержала несколько записей, и первичное поле не могло быть равным 1.
Данный вопрос меня интересует с точки зрения переносимости. Допустим я слил дамп базы, скопировал скрипты, и перенёс на другой сервер. С какого номера в данном случае буду генерироваться ключи, снова с единицы? Как быть, может я чего-то не понял?
ЗЫ: сильно не пинайте
