[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Базы Данных / Oracle /

Переход с MySQL на PostgreSQL: аналог mysql_insert_id()

Источник: http://tmbu.info

На работе пришлось перейти с привычного MySQL на PostgreSQL, с которым я раньше почти не работал. Сразу возникло сравнительно много вопросов. Среди них - срочный: как получить id только что вставленной строчки (т.е. понадобился аналог mysql_insert_id()). Понятно, что последующий select по некоторым признакам - плохая идея. Поэтому был найден хороший путь.

Для генерации id у меня, понятное дело, используется sequence (т.е. тип поля id - serial или bigserial). И оказалось, что новое значение id можно получить таким запросом:

  1. SELECT currval('название_sequence');

Такой запрос выдаст последнее значение, выбранное из последовательности название_sequence функцией nextval() в текущем соединении с базой. В разных, пусть даже одновременно работающих, скриптах эта функция будет возвращать разные значения. Если же в текущем соединении функция nextval('название_sequence') не выполнялась, то currval('название_sequence') вернет ошибку.

В версии 8.1 была добавлена функция lastval(), которая вернет последнее значение, выбранное функцией nextval() в текущем соединении.

Кроме того, есть ситуации, когда неизвестно название sequence (или его лень писать или смотреть, например ;)). Тогда можно написать так (работать это будет начиная с PostgreSQL 8.0):

  1. SELECT currval(pg_get_serial_sequence('таблица', 'id_поле'));



Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Базы Данных / Oracle /

Как взломать парольную защиту Oracle или как ее обойти
07-03-2010   

В статье рассматриваются некоторые собенности парольной защиты Oracle, способствующие несанкционированному проникновению в БД и меры по снижению риска подобного проникновения... подробнее

Кол. просмотров: общее - 3551 сегодня - 0

Размышления об Oracle
07-03-2010   

Я не понимаю, это у Оракла такая политика что ли? Почему, даже казуальные продукты этой компании могут работать лишь при условии создания им идеальных условий. Возьмем например, Oracle 10XE - бесплатный учебный вариант их монстра 10g. Казалось бы: продукт предназначен для бегиннеров: студентов и джуниор девов, которые только начинают изучать платформу. И по идее, он должен быть идеально отлажен по двум причинам... подробнее

Кол. просмотров: общее - 2969 сегодня - 0

Переход с MySQL на PostgreSQL: аналог mysql_insert_id()
07-03-2010   
Кол. просмотров: общее - 3047 сегодня - 0

Наиболее популярные версии Oracle на сегодня
03-03-2010   

К сожалению, нельзя точно посчитать, какое кол-во инсталляций СУБД Oracle в мире, какой версии и на каких платформах. Существуют лишь различные приближенные оценки. Одна из таких методик подсчета - по кол-ву открытых service requestах (SR) на metalink.oracle.com... подробнее

Кол. просмотров: общее - 2886 сегодня - 0

Таблицы только для чтения в Oracle 11g Release 1
09-04-2009   

В предыдущих версиях Oracle, сделать таблицу только для чтения, для других пользователей можно было дав объектные привелегии SELECT пользователю. Но для самого владельца таблица оставалась доступной для записи. Oracle 11g позволяет создавать таблицы которые помечаются только для чтения, используя команду ALTER TABLE... подробнее

Кол. просмотров: общее - 3045 сегодня - 0



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects