powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Триггер на изменение таблицы, с извлечением ApplicationName...
25 сообщений из 29, страница 1 из 2
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33550947
rf62929
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть необходимость написать триггер на одну таблицу, чтобы он все изменения (insert,update) в этой таблице сохранял в другой. Это несложно.

Но подскажите, как написать триггер так, чтобы он еще работал с извлечением Application Name, через которое сделалось это изменение, и еще желательно UserID и AuthID ?
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33551222
дб2юзер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CURRENT CLIENT_APPLNAME, CURRENT CLIENT_USERID и т.п., об этом речь?
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33551467
rf62929
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да именно, т.е. чтобы триггер инстертил все изменения в нужной таблице в другую таблицу + еще инфу через какое приложение это было сделано (ApplicationName) + желательно с какой машины (MachineName) + кто сделал (userID или UserName).
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33551545
дб2юзер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наверно проще делать изменения в таблице не напрямую, а через хп,
и в этих хп отслеживать что надо.
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33551593
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
try funtion APPLICATION_ID()
and query

describe select * from table(snapshot_appl_info('',-1)) as t where t.appl_id=application_id()
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33551607
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дб2юзернаверно проще делать изменения в таблице не напрямую, а через хп,
и в этих хп отслеживать что надо.

не-знаю не знаю....
Дергать всякий раз хп или триггер чтобы при каждом запросе получать значения, которые для данной сессии не меняются... А смысл?
может лучше один раз после коннекта их получить и везде подставлять?
я б так делал
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33551669
дб2юзер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenmanможет лучше один раз после коннекта их получить и везде подставлять?
на стороне клиента?
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33551688
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ага
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33551711
дб2юзер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
обычно пользователям не дают прямой доступ к таблицам, хранящим подобную "служебную" информацию... или пошутил?
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33551775
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я обычно использую статический SQL. Поэтому когда юзер подцеится к базе данных, то он вообще ничего не увидит. А чтобы юзер мог юзать SNAPSHOT* табличные функции у него должны быть привилегии на мониторинг.

Короче это ваша проблема - как строить приложение. Заюзать приведенный мной селект (а другого разумного способа получить нужную вам инфу нет) один раз через ХП в начале сеанса, либо дать права на мониторинг всем (кстати есть переменная окружения которая позволяет это делать, смотрите db2set -lr) и дергать сервер все время на каждый божий инсерт/update чтобы получить инфу которая не меняется.
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33551898
дб2юзер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если не трудно, где и когда по этой схеме будет проводиться запись в служебные таблицы? недопонимаю..
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33551918
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по какой "по этой"? тоже недопонимаю... :(
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33552043
дб2юзер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
по описываемой вами.
я речь вел о том, чтобы операции изменения "рабочих" таблиц производить
через хп и этих хп вести необходимый учет действий пользователя.
как пользователь будет идентифицирован в этих хп - второй вопрос.
можно и через параметр - один раз сформировать(получить) на клиенте учетные данные и передавать в хп.
Как идентифицировать клиента в триггере - не знаю.
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33552113
тлгдшлщм
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) values current user
2) select current user from sysibm.sysdummy1
3) Читайте Cookbook.
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33552218
дб2юзер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дб2юзерCURRENT CLIENT_APPLNAME, CURRENT CLIENT_USERID и т.п., об этом речь?
если этой информации достаточно, тогда и триггера достаточно
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33552260
дб2юзер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т.е. user и в триггере пройдет
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33552282
дб2юзер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а для CURRENT USER :
For static SQL statements, the value represents the authorization ID that is used when the package is bound.

или я опять недопонимаю...
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33552445
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Специально для Вас!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <sqlenv.h>

using namespace std;

//EXEC SQL INCLUDE SQLCA;

int main() {
    struct sqlca sqlca;

    EXEC SQL BEGIN DECLARE SECTION;
        char user_id[ 31 ];
    EXEC SQL END DECLARE SECTION;
    EXEC SQL CONNECT TO TEST;

    if (SQLCODE) {
        cout << "SQLCODE=" << SQLCODE << endl;
        exit( 0 );
    }

    EXEC SQL VALUES USER INTO :user_id;

    cout << "UserID " << user_id << endl;
    EXEC SQL CONNECT RESET;

    return  0 ;

}

Выполняю из под хозяина экземпляра:
UserID DB2I81

выполняю из под root:
UserID ROOT

Т.е. юзайте переменную USER хоть в статическом, хоть в динамическом SQL - она всегда содержит текущий логин кто это всё делает.
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33552475
дб2юзер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
с user_id через user понятно.
CURRENT CLIENT_... регистры будут корректно работать в триггере?
(я пока не могу проверить, предыд. задача была на 7, сейчас - на оракле)
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33552513
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой однако лентяй.... боже мой...
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33552549
дб2юзер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
объясните убогому, пройдет ли вариант:
CREATE TRIGGER DB2ADMIN.TGR_MAIN
AFTER INSERT ON DB2ADMIN.TBL_MAIN
FOR EACH ROW
MODE DB2SQL
insert into db2admin.tbl_log
values (CURRENT CLIENT_APPLNAME,CURRENT CLIENT_WRKSTNNAME, CURRENT CLIENT_ACCTNG);

c user-ом не 7 делал, остального там не было.
ч/з админ API все получать можно было
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33552578
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
http://publib.boulder.ibm.com/infocenter/db2luw/v8//topic/com.ibm.db2.udb.doc/admin/r0008404.htm
и поваренная книга, если еще не сказали.
Ааа, Николай уже сказал.
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33552718
дб2юзер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ggvhttp://publib.boulder.ibm.com/infocenter/db2luw/v8//topic/com.ibm.db2.udb.doc/admin/r0008404.htm
и поваренная книга, если еще не сказали.
Ааа, Николай уже сказал.

с publib.boulder.ibm.com я знаком (оттуда регистры и взял).
у меня со сложносочененными предложениями на английском не очень...
ввобщем не поленился, поставил 8.

CREATE TABLE DB2ADMIN.TBL_LOG
(FAPPL VARCHAR(255),
FWRKST VARCHAR(255),
FACCT VARCHAR(255)
)


CREATE TABLE DB2ADMIN.TBL_MAIN
(FNUM INTEGER,
FTEXT VARCHAR(50)
)

CREATE TRIGGER DB2ADMIN.TGR_MAIN
AFTER
INSERT
ON DB2ADMIN.TBL_MAIN
FOR EACH ROW
MODE DB2SQL
insert into db2admin.tbl_log values (CLIENT APPLNAME, CLIENT WRKSTNNAME, CLIENT ACCTNG);

insert into DB2ADMIN.TBL_MAIN values (1, 'text1');
insert into DB2ADMIN.TBL_MAIN values (2, 'text2');
Select * from DB2ADMIN.TBL_MAIN;

Select * from DB2ADMIN.TBL_LOG;
в TBL_LOG пустые строки

(или я совсем тупой стал???)
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33552723
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поищи функцию sqleseti
...
Рейтинг: 0 / 0
Триггер на изменение таблицы, с извлечением ApplicationName...
    #33552767
Фотография Alexey Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то BEGIN ATOMIC ... END не видно.
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Триггер на изменение таблицы, с извлечением ApplicationName...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]