Форум: "Начинающим";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.011 c