Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.014 c
6-78571
кондратий
2002-08-23 18:19
2002.10.24
POST ...


6-78551
Ksion
2002-08-17 16:44
2002.10.24
Авторизация через инет


14-78669
Jumbot
2002-10-05 17:38
2002.10.24
помогите Regedit


3-78272
lutikh
2002-10-02 22:23
2002.10.24
Много таблиц (.dbf). Выбрать одну позицию.


1-78478
TankMan
2002-10-13 03:50
2002.10.24
Как передать n-ой форме приложения параметры.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский