![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать сделал-ли запрос UPDATE изменение в базе [D7, IB6.x]
Dik © (2004-11-12 18:02:00)Мне нужно изменить значение в одной базе по условию (меняю через UPDATE запрос) и если изменение прошло, провести изменение в другой базе. При этом одновременно могут эту операцию проделывать несколько клиентов, тоесть запомнить значение до изменения и проверить изменилось ли оно я не могу, потому что его может поменять ктото другой. Есть ли какая нибудь функция или свойство в IBQuery позволяющее узнать результат выполнения запроса. Помогите справиться с этой задачкой
Dik (2004-11-13 02:07:00) [1]Большое спасибо Евгений за подсказку, оказывается всё очень просто, а -1 потому что смотрел после Commit. Проверил работает нормально и на одну проблемку меньше :)
Dik (2004-11-13 01:49:00) [2]И вообще у меня RowsAffected всё время -1 не зависимо от изменений, в чём причина?
Dik (2004-11-13 01:43:00) [3]А RowsAffected не станет <>0 при изменении другим клиентом а не моим?
Johnmen (2004-11-13 01:14:00) [4]Если что-то ты изменил RowsAffected<>0
Dik (2004-11-13 01:04:00) [5]Обясняю проблему точнее, есть запрос типа
IBQUery3.SQL.Add('update sklad set n=1 where n=5');
если нет записи с n=5 то никаких изменений не происходит и при
этом except не срабатывает, а мне надо знать менялось чтото или нет, при этом изменения в это время мог сделать другой клиент
Соловьев (2004-11-12 19:05:00) [6]Гоню :(
try
Query.ExecSQL;
Commit;
except
Rollback;
end;
Dik (2004-11-12 19:03:00) [7]Если по условию запись не найдена то EXCEPT разве будет вызвано ?
По моему в базе просто ничего не изменится и выполнится Commit
Соловьев (2004-11-12 18:14:00) [8]try
Query.ExecSQL;
except
Rollback;
end;
Commit;