Получить строки, затронутые обновлением - PullRequest
2 голосов
/ 18 января 2011

Как вы можете получить точные строки, на которые влияет оператор SQL UPDATE в DB2 для AS400 ?

Очень полезно видеть, какие строки только что обновлены, даже больше во время тестов.

Я видел этот вопрос : то же самое, но специфично для MySQL.Есть ли стандартный способ SQL или специфичный для DB2 способ сделать это?

Я также видел эту технику , но я не могу использовать ее, потому что мой запрос на обновление слишком сложен.

Дополнительной функцией может быть: получение также предыдущей версии этих строк , чтобы вы могли сравнить ее с фактической версией (после обновления) и увидеть изменения.

РЕДАКТИРОВАТЬ: мои версии DB2 предназначены для IBM i V5R3 и V6R1

Ответы [ 2 ]

5 голосов
/ 18 января 2011

Вы не говорите, какую версию i5 / OS вы используете, но если вы работаете с V6R1 или новее, вы можете использовать «ссылки на таблицу изменений данных», чтобы увидеть строки, которые были изменены оператором update.Например:

select * from FINAL TABLE ( update yourtable set c1 = x where ... )

FINAL TABLE выдаст вам строки после запуска любого / всех триггеров.Обратите внимание, что есть и другие ссылки на таблицы изменений данных, NEW TABLE, которые будут показывать строки до того, как на них повлияют какие-либо триггеры.

О ссылках на таблицы изменений данных можно прочитать в документации i5 / OS.

4 голосов
/ 26 января 2011
GET DIAGNOSTICS updated_rows = ROW_COUNT;

Проверьте это здесь: ПОЛУЧИТЕ ДИАГНОСТИКУ

Ваши «дополнительные функции» звучат так, как будто вы хотите триггер.

В интерактивном режиме, используя STRSQL, ответные сообщения, подобные этому, отображаются на экране после завершения выписки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...