Форум: "Базы";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
ВнизЕсть ли какие-ниб. системные переменные, характеризующие... Найти похожие ветки
← →
NeyroSpace (2002-10-02 12:47) [0]Создаю на сервере триггер, кот. срабатывает по INSERT. Как узнать какой пользователь выполнил INSERT? Есть ли какие-ниб. системные переменные, характеризующие проводимую транзакцию? Имя пользователя или его IP-адрес?
← →
NickBat (2002-10-02 12:52) [1]user
← →
Digitman (2002-10-02 12:59) [2]в before insert - триггере в некое поле CREATED_BY типа char(31) таблицы пиши :
NEW.CREATED_BY = CURRENT_USER;
Заодно и метку времени создания и роль можешь фиксировать в доп.полях:
NEW.CREATION_TS = CURRENT_TIMESTAMP;
NEW.CREATION_ROLE = CURRENT_ROLE;
← →
NeyroSpace (2002-10-02 13:00) [3]Можно немного подробнее как получить к ней доступ или ссылку на доку?
← →
NeyroSpace (2002-10-02 13:24) [4]У меня в некоторых таблицах такого поля нет, но все вставляемые или обновляемые записи имеют одинаковый ID.(внешний ключ)
так вот я пытают сделать так:
перед вставкой записей я из делфей регистрирую новое событие с именем = ID
в триггере
post_event = NEW.ID
и первый раз все срабатывает, но при попытке из делфей удалить существующее событие и сделать новое вся работа с дазой подвисает :-(
← →
Digitman (2002-10-02 13:37) [5]
> как получить к ней доступ
К кому это - К НЕЙ ? К таблице что ли ? Я не понял...
>>ссылку на доку
"Дока" - официальная док-ция по IB6.
За исключением CURRENT_ROLE. Здесь я, кажется, "загнул лишнего" - это уже вроде бы фича из FB, а не из орининального IB6
Так тебе что, нужна асинхронная нотификация о событии или просто фиксация в таблице инф-ции о создателе записи ?
← →
NeyroSpace (2002-10-02 13:52) [6]>Можно немного подробнее как получить к ней доступ ...
(к переменной)
Мне нужно юзеру выводить инфу о том как просходит обработка запроса (т.е. прогресс бар). А то записей много и на время обработки запроса комп как бы "подсивает", и не понятно как долго это будет длится.
Если регистрируешь событие допустим на INSERT, то сервер кидает приложению все события INSERT от всех пользователей? (или я ошибаюсь?)
мне нужно чтобы тригер срабатывал только на конкретного пользователя.
И еще попутно меня интересует может ли триггер узнать инфу о происходящей транзакции, т.е. кто эту транзакцию провел?
← →
Digitman (2002-10-02 14:30) [7]
(к переменной)
К какой ?? О какой ПЕРЕМЕННОЙ идет речь у тебя ?
> Мне нужно юзеру выводить инфу о том как просходит обработка
> запроса ...(или я ошибаюсь?)
Ошибаешься.
может ли триггер узнать инфу о происходящей транзакции..
Может.
см. CURRENT_USER (IB6), TRANSACTION_ID, (FB)
, т.е. кто эту транзакцию провел?
Не может. Триггер от начала до конца выполняется в рамках ВЫПОЛНЯЮЩЕЙСЯ, а не УЖЕ ВЫПОЛНЕННОЙ в дан.момент транзакции
← →
Desdechado (2002-10-02 14:48) [8]И события появляются только после УСПЕШНОГО завершения транзакции.
а прогресс-бар можно поставить глупый, который катается туда-сюда (типа не завис)
← →
NeyroSpace (2002-10-02 14:56) [9]Только что проверял с другого компа делал INSERT и на моем появилось зарегистрированое событие. Т.е. приходят сообщения попрожденные действиями всех пользователей.
>Может.
>см. CURRENT_USER (IB6), TRANSACTION_ID, (FB)
а по подробнее, где именно щас копаюсь в доке - не найду :-(.
← →
Digitman (2002-10-02 15:08) [10]В "InterBase 6 Lanquage Reference" см. ключ.слово "USER"
По поводу FB интересующие детали ищи на http://sourceforge.net
← →
NeyroSpace (2002-10-02 15:56) [11]NickBat © (02.10.02 12:52)
прав, я сразу не понял :-).
описания USER и других переменных пока не нашел, но примеры в доке есть:
insert into MyTable (id,column) values (1, user).
А вот что я хотел:
CREATE TRIGGER INSERT_EVENT FOR SUB_ATTRIBUTES AFTER INSERT POSITION 0 AS
BEGIN
POST_EVENT user;
END
Всем спасибо!
← →
Digitman (2002-10-02 16:09) [12]>NeyroSpace
И что это дает тебе ? Кроме асинхронной нотификации юзера о том, что некий юзер в рамках успешной транзакции что-то изменил в базе ? То ли вставил запись, то ли удалил, то ли модифицировал ... сколько записей - непонятно ... в какой таблице - тоже ...
← →
NeyroSpace (2002-10-02 16:24) [13]>Digitman © (02.10.02 16:09)
Ну почему же? У меня будут тригерры на все события.
Приложение будет регистрировать событие под именем своего пользователя, и соответственно получать события произведенные только им (а не всеми пользователями).
А сколько записей - все понятно, т.к. перед вставкой приложение знает сколько записей нужно вставить, остается только ловить мессаги и считать их количество.
Щас пробую должно получиться :-).
Кстате, не подскажите где описываются системные переменные такие же как USER ? Я все еще не нашел... т.е. в зарезервированых словах видел, а описания не нашел.
← →
Digitman (2002-10-02 16:42) [14]
> получать события произведенные только им
А смысл ? Что, юзер твой не ведает, что сам же и делает ?
USER - это системный домен с предопределенным типом char(31)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c