Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить/отобразить результат update, узнать, что за записи изменились 
V
    Опции темы
Ibragim
Дата 22.3.2007, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 28.9.2004
Где: Киев

Репутация: нет
Всего: нет



Вечер добрый. Вот столкнулся с таким вопросом. Есть запрос, которой в 10 записях меняет значение FREE на USED. По логике задачи мне нужно узнать, причем очень желательно сразу же в этом запросе, в каких записях была замена, то есть, проще говоря, вывести эти записи на экран. В SQL не силен, може кто чего посоветует?

Код

update `tr_tabels` set state="USED" where state="FREE" LIMIT 10

PM MAIL   Вверх
GZep
Дата 22.3.2007, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: нет
Всего: 32



Ibragim, по-моему можно только выполнив 2-ой запрос с select.


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
Ibragim
Дата 22.3.2007, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 28.9.2004
Где: Киев

Репутация: нет
Всего: нет



Понимаешь, у меня это удаленная БД (через инет с локального клиента подключаются), и если по закону бутерброда будет дисконнект между этими запросами, кардинально заглючит вся система...
Лочить таблицу нельзя по той же причине...
Ладно, спасибо за ответ, буду выкручиваться

PM MAIL   Вверх
Бонифаций
Дата 22.3.2007, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 20
Всего: 40



значит применяй транзакционный движок (innodb) например и делай update и select в рамках одной транзакции.. Если связь оборвется где-то до коммита - транзакция откатится


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
Ibragim
Дата 22.3.2007, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 28.9.2004
Где: Киев

Репутация: нет
Всего: нет



гм... отлично. Тока я не силен к сожалению в таких тонкостях.  Движок как поменять знаю, а вот из-под Дельфи имею только возможность сделать "выполнить SQL скрипт", и где там рамки транзакций - не знаю. (использую Zeos компоненты). 
Я вроде вышел из ситуации так: добавил еще одно поле, при update выставляю там флаг "операция не завершена", после показа (Select) и других операций делаю update этого флага. Так тоже конечно может быть нарушена целостность, но зато будет сразу по флагу видно что не закончено... Вот так smile 

PS Спасибо за отклики, я теперь к вам с других vingrad-форумов - у меня пару БД в проекте появилось.
PM MAIL   Вверх
iCode
Дата 30.4.2007, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 27.3.2007
Где: Томск

Репутация: нет
Всего: нет



Цитата(Ibragim @ 22.3.2007,  22:17)
добавил еще одно поле, при update выставляю там флаг "операция не завершена", после показа (Select) и других операций делаю update этого флага. Так тоже конечно может быть нарушена целостность, но зато будет сразу по флагу видно что не закончено...

Транзакции - это не сложно, смотри:
Код

  dmDB.Query('BEGIN;');

  { Какой-то запрос/запросы }

  dmDB.Query('COMMIT;');


Я так делаю на таблицах InnoDB.
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.1040 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.