Как организовать лог по некоторым событиям
Добавлено: 11 сен 2005, 23:57
СУБД FIREBIRD
Как правильно организовать триггер, а также таблицу в которой будет вестись лог, статистика некоторых действий юзера. Например будем отлавливать все, что пользователь вносит в таблицу DEVICES.
Для этого создаём таблицу EVENTS, в которой имеется первичный ключ PK_ID, FK_ID внешний ключ на первичный ключ таблицы DEVICES. Также имеется поле UID, в котором должно хранится имя юзера, поле E_DATE соответственно для хранения даты внесения. В таблице DEVICES у нас имеется поле NAME, в котором хранится имя добавляемого устройства.
Создаём процедуру GETUID, которая возвращает нам current_user, также мы можем получить current_date и т.п.
Теперь что касается триггера, я не совсем понимаю весь принцип, ибо Firebird это моя первая субд, с которой я так сказать и начал своё образование в этой сфере, триггер может выполняться перед INSERT и после INSERT, нам который нужен? Далее, допустим у нас имеется триггер, который имеет свойство AFTER INSERT, что мы пишем в теле: insert into events values(GETUID,GETDATE);
Понимаю, что не правильно вызывать таким образом процедуры, необходимо делать execute procedure GETUID, но, целесообразно ли вообще создавать процедуру для того, чтобы просто получить current_user, current_date ? Ведь в теле процедуры у меня содержиться всеголишь select current_user from rdb$database, по той причине, что я не знаю, как корректно вставить подобный запрос в триггер.
Я не прошу конкретного мануала, пошаговых действий. Просто подскажите, я на правильном пути? Будет ли счастье?
Заранее благодарен за любую информацию.
Как правильно организовать триггер, а также таблицу в которой будет вестись лог, статистика некоторых действий юзера. Например будем отлавливать все, что пользователь вносит в таблицу DEVICES.
Для этого создаём таблицу EVENTS, в которой имеется первичный ключ PK_ID, FK_ID внешний ключ на первичный ключ таблицы DEVICES. Также имеется поле UID, в котором должно хранится имя юзера, поле E_DATE соответственно для хранения даты внесения. В таблице DEVICES у нас имеется поле NAME, в котором хранится имя добавляемого устройства.
Создаём процедуру GETUID, которая возвращает нам current_user, также мы можем получить current_date и т.п.
Теперь что касается триггера, я не совсем понимаю весь принцип, ибо Firebird это моя первая субд, с которой я так сказать и начал своё образование в этой сфере, триггер может выполняться перед INSERT и после INSERT, нам который нужен? Далее, допустим у нас имеется триггер, который имеет свойство AFTER INSERT, что мы пишем в теле: insert into events values(GETUID,GETDATE);
Понимаю, что не правильно вызывать таким образом процедуры, необходимо делать execute procedure GETUID, но, целесообразно ли вообще создавать процедуру для того, чтобы просто получить current_user, current_date ? Ведь в теле процедуры у меня содержиться всеголишь select current_user from rdb$database, по той причине, что я не знаю, как корректно вставить подобный запрос в триггер.
Я не прошу конкретного мануала, пошаговых действий. Просто подскажите, я на правильном пути? Будет ли счастье?
Заранее благодарен за любую информацию.