IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Идентификация изменённой записи (http://www.imho.ws/showthread.php?t=83361)

Kitsune 06.04.2005 18:05

Идентификация изменённой записи
 
Пожалуйста подскажите каким образом я могу записывать и хранить в базе данных FireBird данные о том, кто и когда изменил конкретную запись. Желательно чтобы записывался IP пользователя.
Т.е., например, есть таблица с полями П1, П2, П3, П4(Ip пользователя) . Некоторый пользователь добавил новую запись (или изменил её), сразу после сохранения записи (или до сохранения) в поле П4 должна поместиться запись в виде IP юзера или его ЛОГИН.
Спасибо!
Буду рад ссылкам, где можно именно про это почитать и ознакомиться.

/7y3uK 06.04.2005 20:16

Дык, сделай соответствующие филды в таблице, которые тебе нужны и пиши туда... запрос на добавление/изменение просто переделай и усе...
Кстати, не проще ли хранить его ID, или у тебя доступ есть и не у зарегеных пользователей?

ЕЖ 07.04.2005 00:18

Из Language Reference ещё Interbase'а
Цитата:

CREATE DOMAIN USERNAME AS VARCHAR(20) DEFAULT USER;

CREATE TABLE ORDERS (ORDER_DATE DATE, ENTERED_BY USERNAME, ORDER_AMT DECIMAL(8,2));

INSERT INTO ORDERS (ORDER_DATE, ORDER_AMT) VALUES (’1-MAY-93’, 512.36);
Т.к. INSERT не содержит значения для колонки ENTERED_BY, InterBase
автоматически вставляет имя текущего пользователя, JSMITH:
Цитата:

SELECT * FROM ORDERS;
1-MAY-93 JSMITH 512.36
В объявлении домена, USER - стандартная контекстная переменная (в Firebird сейчас ещё и CURRENT_USER) - текущий пользователь.

Можно, в принципе, и триггеры на добавиление/изменение написать с этой переменной.

Willow 07.04.2005 21:56

Только я бы не в insert и update записывал дату обновления, а написалбы тригер:

CREATE TRIGGER NAME_BIU0 FOR TABLENAME
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
new.updatetime=current_timestamp;
new.user=CURRENT_USER;
end


Часовой пояс GMT +4, время: 17:26.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.