Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.5 MB
Время: 0.015 c
2-1150354720
Марина
2006-06-15 10:58
2006.07.02
Как прокнутить скролл?


15-1149596109
_RusLAN
2006-06-06 16:15
2006.07.02
Как правильно назвать функцию?


10-1121666784
ORMADA
2005-07-18 10:06
2006.07.02
IDE получить имя текущего проекта


4-1143711612
Noby
2006-03-30 13:40
2006.07.02
Сообщения чужим окнам


1-1148133872
***(H@kker)***
2006-05-20 18:04
2006.07.02
Скорость работы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский