Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Username [D6, XP]


Страницы:   1 2

Id ©   (2006-06-13 11:07:00) 

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


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


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

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


Desdechado   (2006-06-13 22:04:00) [2]

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


Sergey13   (2006-06-13 15:08:00) [3]

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


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

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


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


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

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


Sergey13   (2006-06-13 14:30:00) [6]

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


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


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

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


Sergey13   (2006-06-13 12:40:00) [8]

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


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

Таблица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:14:00) [10]

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


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


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

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


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

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


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


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

Да


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


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

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


Sergey13   (2006-06-13 12:02:00) [15]

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


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


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


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


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


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

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


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


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


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


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


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

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


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


> Id   (13.06.06 11:49) [4]


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

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо