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

Вниз

Username   Найти похожие ветки 

 
Id   (2006-06-13 11:07) [0]

Здраствуйте, уважаемые мастера.
Работаю в IBExpert-e с FB 1.5, проблема такая.
В триггере нужно вставить в поле таблицы имя пользователя.
Как узнать какой пользователь использует данный триггер?


 
Сергей М. ©   (2006-06-13 11:16) [1]

CURRENT_USER


 
Id   (2006-06-13 11:28) [2]


> Сергей М. ©   (13.06.06 11:16) [1]

Благодарю.
Еще вопрос.
Как в том же самом узнать текущий номер генератора?


 
Сергей М. ©   (2006-06-13 11:31) [3]

CurrentGenId = GEN_ID(GenName, 0);

А зачем, если не секрет ?


 
Id   (2006-06-13 11:49) [4]

Это что-то типа контроля за действиями над таблицей, данные о которых заносятся в другую таблицу


 
Sergey13 ©   (2006-06-13 11:52) [5]

2[4] Id   (13.06.06 11:49)
Я бы не советовал опираться на результат полученный от GEN_ID(GenName, 0). Там может быть некорректная информация.


 
Сергей М. ©   (2006-06-13 11:57) [6]


> Id   (13.06.06 11:49) [4]


И действительно (см. [5]) - такая логика не терпит критики.

Пиши в ту самую "другую таблицу" непосредственно значение new.PrymaryKeyField


 
Id   (2006-06-13 11:57) [7]


> Sergey13 ©   (13.06.06 11:52) [5]

А если машина локальная, можно на это опираться?


 
Сергей М. ©   (2006-06-13 11:59) [8]


> если машина локальная, можно на это опираться?


Опираться на это можно лишь в случае 100%-й гарантии доступа к базе лишь одного пользователя в каждый момент времени.


 
Id   (2006-06-13 12:00) [9]


> 100%-й гарантии доступа к базе лишь одного пользователя
> в каждый момент времени

Именно так и будет


 
Сергей М. ©   (2006-06-13 12:01) [10]


> Именно так и будет


А зачем тогда CURRENT_USER ?


 
Sergey13 ©   (2006-06-13 12:02) [11]

2[7] Id   (13.06.06 11:57)
> А если машина локальная, можно на это опираться?
Если так, то проще, но ошибки все равно могут возникать, если например один генератор используется для разных таблиц и в разных транзакциях. Т.е. риск меньше, но есть. А тчо ты хочешь таким образом найти? ИД-шник вставленной записи что ли?


 
Id   (2006-06-13 12:06) [12]


> А зачем тогда CURRENT_USER ?

Есть люди, которые тоже знают мой LOGIN и Пароль. Если я вышел с раб. места, то потом я увижу, что кто-то изменял базу.


 
Id   (2006-06-13 12:06) [13]


> ИД-шник вставленной записи что ли?

Да


 
Sergey13 ©   (2006-06-13 12:08) [14]

2 [13] Id   (13.06.06 12:06)
Ну так он же у тебя есть при вставке в таблицу. Там же (в тригере) и заполняй лог.


 
Id   (2006-06-13 12:13) [15]


> Sergey13 ©   (13.06.06 12:08) [14]

Там используется другой триггер


 
Sergey13 ©   (2006-06-13 12:14) [16]

2[15] Id   (13.06.06 12:13)
Опиши последовательность твоей работы.


 
Id   (2006-06-13 12:26) [17]

Таблица1 в Base
Работаю c Таблица1 в Delphi 6. Она заполняется.
Параллельно заполняется Таблица2 в той же базе. Её структура:

CREATE TABLE TRACK (
   ID         INTEGER NOT NULL,
   USERNAME   VARCHAR(50) COLLATE PXW_CYRL,
   DATAEVENT  DATE,
   TIMEEVENT  TIME,
   TYPEEVENT  VARCHAR(20) COLLATE PXW_CYRL,
   NEWVALUE   VARCHAR(250) COLLATE PXW_CYRL
);
где id - Первичный ключ, для него существует генератор,
Username - текущий пользователь,
Dataevent - текущая дата,
Timeevent - Текущая дата,
typeEvent - тип события (например - "Update"),
NEWVALUE - номер изменяемой записи в Таблице1.
Триггеры на After Insert, update, delete


 
Sergey13 ©   (2006-06-13 12:40) [18]

2[17] Id   (13.06.06 12:26)
Странно, что наблюдая за Таблица1 ты пытаешься отследить ее изменения в тригерах на Таблица2. Или мне не понятен смысл работы.


 
Id   (2006-06-13 14:23) [19]


> Sergey13 ©   (13.06.06 12:40) [18]

Триггер вставляет запись в Таблицу2, если на Таблице1 произошли изменения. Вот


 
Sergey13 ©   (2006-06-13 14:30) [20]

2 [19] Id   (13.06.06 14:23)
На события какой таблицы настроен тригер? На Таблицу1? Тогда какие трудности с определением вставленного ID? Оно "сидит" в new.id.


 
Id   (2006-06-13 14:42) [21]


> Оно "сидит" в new.id.

Спасибо, то, что надо! 8-)


 
Id   (2006-06-13 14:57) [22]

Еще для уточнения.
Для Update  и delete использовать OLD.ID? Правильно?


 
Sergey13 ©   (2006-06-13 15:08) [23]

2[22] Id   (13.06.06 14:57)
Для Insert доступно только NEW. Для Delete только OLD. Для Update оба значения.


 
Desdechado ©   (2006-06-13 22:04) [24]

>> А зачем тогда CURRENT_USER ?
> Есть люди, которые тоже знают мой LOGIN и Пароль.
если они знают твой логин, то в триггере это быдет тот же самый пользователь
разницы CURRENT_USER с одинаковым логином у разных персоналий не будет


 
Id   (2006-06-14 15:42) [25]


> Desdechado ©   (13.06.06 22:04) [24]

Мне важен сам факт того, что кто-то без меня лазил.



Страницы: 1 вся ветка

Текущий архив: 2006.07.02;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.041 c
3-1146898813
arhis
2006-05-06 11:00
2006.07.02
Удаление записей в АДО


2-1150394396
Тимофей Юрьевич
2006-06-15 21:59
2006.07.02
не заню как и назвать;)


1-1148381092
dreamse
2006-05-23 14:44
2006.07.02
Передача параметров в ActiveX из HTML странички


3-1147150289
Sphinx
2006-05-09 08:51
2006.07.02
ADOConnect := TADOConnection.Create(Application) -> EOleSysError


3-1147101888
__alex
2006-05-08 19:24
2006.07.02
Есть ли в Paradox каскадное удаление?