![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Число измененных записей [IB6.x]
MXA © (2003-04-02 18:43:00)подскажите, пожалуйста, как в ХП после
выполнения Update определить число
измененных записей (если это, конечно, возможно)?
MXA (2003-04-04 09:35:00) [1]ок, спасибо
Johnmen (2003-04-03 22:53:00) [2]>Smashich © (03.04.03 19:56)
>может быть в АПИ от IB есть - не знаю
Есть конечно. Функция isc_vax_integer.
Но это относится к работе ПРИЛОЖЕНИЙ.
panov (2003-04-03 20:07:00) [3]Как вариант можно UDF использовать в триггере. накладные расходы будут минимальными.
Smashich (2003-04-03 19:56:00) [4]может быть в АПИ от IB есть - не знаю
MXA (2003-04-03 19:19:00) [5]up
MXA (2003-04-03 12:37:00) [6]2 Johnmen © (03.04.03 11:45)
>Сам то сервер знает, но не предоставляет механизма (интерфейса), чтобы "другие" узнали. По крайней мере мне такой
>способ неизвестен...
... подумал я и задал вопрос в этом форуме :)
2 zacho ©
именно этого я и хотел избежать!
zacho (2003-04-03 12:08:00) [7]Можно перед UPDATE сделать SELECT COUNT..
Или если интересует, будет ли изменена хоть одна запись - вместо SELECT COUNT можно использовать EXISTS
Polevi (2003-04-03 11:51:00) [8]в MSSQL есть @@ROWCOUNT, насчет IB не знаю
Johnmen (2003-04-03 11:45:00) [9]Сам то сервер знает, но не предоставляет механизма (интерфейса), чтобы "другие" узнали. По крайней мере мне такой способ неизвестен...
MXA (2003-04-03 11:40:00) [10]то есть сервер не знает сколько он только что изменил записей?
непонятно, поделитесь своими рассуждениями, пожалуйста
Johnmen (2003-04-03 10:02:00) [11]Такая возможность есть у клиента.
Есть ли такая возможность у сервера - лично мне не известно, но логически размышляя, думается, что нет...
MXA (2003-04-03 09:51:00) [12]во блин :(
я как-то неточно вопрос задал?
или никто не знает?
Rad (2003-04-03 07:58:00) [13]А свойство
RowsAffectedне подойдет?
Правда, вроде как, оно как-то глючило - но вдруг...
Иван Шихалев (2003-04-02 22:00:00) [14]Ничего подобного, если id - ключ.
MXA (2003-04-02 21:01:00) [15]>Smashich
>NUMOFUPDATE=NUMOFUPDATE+1
я не про то спрашивал :(
>UPDATE B SET B.Field=1 where B.id = (:di);
может проапдейтить 1 запись в таблице B, может
проапдейтить 0 записей, а может 10 - вот это
мне надо узнать :(
Smashich (2003-04-02 20:27:00) [16]>>>ну может триггер и несколко обращений к
счетчику и не сильно замедлят процесс при
большом числе апдейтов, но ну его нафиг ради
этого менять структуру базы
CREATE PROCEDURE "UPDATESOME"
(
ID INTEGER
)
RETURNS
(
NUMOFUPDATE INTEGER
)
AS
DECLARE di int;
begin
NUMOFUPDATE=0;
for select * from A where A.id = :id into di
do
begin
UPDATE B SET
B.Field=1
where B.id = (:di);
NUMOFUPDATE=NUMOFUPDATE+1
end
suspend;
end ^
MXA (2003-04-02 20:20:00) [17]>Sergey Masloff (02.04.03 19:53)
>С какого фига это медленно?
ну может триггер и несколко обращений к
счетчику и не сильно замедлят процесс при
большом числе апдейтов, но ну его нафиг ради
этого менять структуру базы
может это можно сделать как-либо еще?
конкретнее - нужно узнать, что в результате
апдейта небыло изменено ни одной записи
Sergey Masloff (2003-04-02 19:53:00) [18]MXA (02.04.03 18:58)
2Smashich
медленно :(
С какого фига это медленно?
MXA (2003-04-02 18:58:00) [19]2Smashich
медленно :(
многие утилиты показывают в статистике
число измененных записей, или, например,
TSQLDataSe.ExecSQL - через API?
Smashich (2003-04-02 18:47:00) [20]заведи счетчик и при каждом update увелчивай его:)