[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Можно ли получить id-шники измененных записей?
zvezda_t
Всем привет.
Скажите пожалуйста, после выполнения операции update - можно ли получить id-шники затронутых записей?

Использую ф-ции Codeigniter, для работы с БД. rolleyes.gif

_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
sergeiss
Вообще-то, в любой документации по Постгре, где описание апдейта, есть такая хрень:
update .... returning *

Вместо * можно указать определенный список полей, которые хочешь получить. Данные в ПХП выбираются также, как если бы это был сделан SELECT.

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

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

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

user posted image
zvezda_t
Спасибо, большое.

Помогите, пожалуйста под CI написать такой запрос..

вот нашла статьи:
http://ellislab.com/forums/viewthread/88548/
https://github.com/EllisLab/CodeIgniter/com...1e6bba6045a8727

изменила ф-цию is_write_type($sql) в DB_driver.php
Но это не помогло, мой запрос всё равно не возвращает id

$query = $this->db->query("update test1 set user_name = 'c' where user_name = 'a' returning uid");
$result=$query->result_array(); //пишет: Call to a member function result_array() on a non-object


_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
T1grOK
Где то, что то делаешь не так. Этот вариант вполне рабочий
public function is_write_type($sql)
{
return (bool) (preg_match('/^\s*"?(SET|INSERT|UPDATE|DELETE|REPLACE|CREATE|DROP|TRUNCATE|LOAD|COPY|ALTER|RENAME|GRANT|REVOK E|LOCK|UNLOCK|REINDEX)\s+/i', $sql) && !preg_match('/ RETURNING /i', $sql));
}


_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
sergeiss
Цитата (zvezda_t @ 27.02.2014 - 11:05)
"update test1 set user_name = 'c' where user_name = 'a' returning uid

Ты можешь запустить этот запрос напрямую, а не через свой скрипт? Проверь. Я думаю, что скорее всего "да".

Если бы ты делала постой select, то тоже использовала бы $this->db->query() и ->result_array()? Я это к тому спрашиваю, что там для апдейта и для селекта могут использоваться разные функции (это предположение, а не утверждение). Потому что "обычно" из апдейта ничего не возвращают.

PS. Вот одна из причин, почему не люблю всякие навороченные системы. Для того, чтобы запустить элементарный запрос, приходится делать "танцы с бубном". Хотя его очень легко выполнить стандартными средствами ПХП.

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

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

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

user posted image
zvezda_t
T1grOK, спасибо тебе большое человеческое) я у первого preg_match - забыла отрицание убрать!
Твой пример - заработал!!!!


sergeiss, спасибо тебе rolleyes.gif
пример заработал :-*

_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
Valick
на всякий случай для MySQL можно использовать такой вариант
SET @id := "";
UPDATE `t1`
SET `id2` = `id2`-1
WHERE `id3` = 3
AND ( SELECT @id := CONCAT_WS(',', CAST(`id` AS CHAR CHARACTER SET utf8), @id) );
SELECT @id;

__
при UPDATE IGNORE обманывает :(

_____________
Стимулятор ~yoomoney - 41001303250491
dr.nomore
Логику хотелки понять не могу. Если name уникальный ключ, то нафик id? А если не уникальный процитированный запрос сделает двух одинаковых юзеров запростяк.
Быстрый ответ:

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