[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Postgre vs MySQL: получить айди последних данных
sergeiss
Это продолжение этой темы: http://phpforum.su/index.php?showtopic=83964&hl=

Вечная проблема Мускуля: как получить айди последней вставленной строки? И ладно, она худо-бедно решается. Но как быть, если надо получить инфу о тех строках, которые были задействованы в апдейте или удалены?

Допустим, у нас какой-то сложный запрос на апдейт с кучей условий. Как в Мускуле найти те строки, что были изменены? Только если "танцы с бубном".

Мечта "мускулиста":
1. Сначала, например, апдейт:
UPDATE ..... WHERE .....

2. Затем получить все строки, что были изменены
SELECT .... WHERE <СТРОКИ, ИЗМЕНЕННЫЕ ПОСЛЕДНИМ АПДЕЙТОМ>


В Постгре же эта проблема решается просто и изящно. В любом запросе INSERT, UPDATE, DELETE мы можем в конце приписать "волшебное" слово RETURNING и список полей, которые хотим получить. То есть, мы пишем нужный запрос, отправляем его, полученный ответ обрабатываем в ПХП также, как если бы это был простой SELECT

UPDATE .... WHERE .... RETURNING *

Данный запрос сделает апдейт вернет все задействованные в апдейте строки и все их поля.

INSERT INTO ... ... .... .. ... RETURNING id

Этот запрос вставит данные и вернет айди вставленной строки (если она одна) или всех вставленных строк (если их было несколько).

Вместо id или "звездочки" можно указать любые колонки из таблицы.

Как видим, никаких "танцев с бубном", всё просто и изящно user posted image
Работает, подчеркиваю еще раз, для INSERT, UPDATE, DELETE - для любых запросов, изменяющих данные.


Ну как, пишем еще один "+1" в адрес Постгре? Или имеются возражения у кого-нибудь?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
S.Chushkin
Не возражаю. Такой возможности в mySQL нет.
А кстати, я что-то не помню - это стандарт или плюшка PG?

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
sergeiss
Цитата (S.Chushkin @ 11.11.2014 - 16:17)
плюшка PG?

Она самая.

Цитата
INSERT conforms to the SQL standard, except that the RETURNING clause is a PostgreSQL extension

http://www.postgresql.org/docs/8.2/static/sql-insert.html



_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.