Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.24;
Скачать: CL | DM;

Вниз

Есть ли какие-ниб. системные переменные, характеризующие...   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.019 c
3-78311
Sayan
2002-10-04 08:55
2002.10.24
Нафигатор по базе


1-78453
psiho
2002-10-11 20:09
2002.10.24
help или *.plh


1-78516
aabark
2002-10-11 12:34
2002.10.24
Запуск демо треб оболочки Delphi


1-78356
Юрий К
2002-10-13 23:51
2002.10.24
Динамическое создание компонентов


7-78695
TsaturSoft
2002-08-13 22:20
2002.10.24
Иконка каталога