У меня есть проект для одного из моих классов. Нам нужно создать журнал, когда две наши таблицы имеют внесенные в них изменения: insert / update / delete. Мы должны использовать Oracle Triggers и PL-SQL. В файле журнала нам нужно записать UserID, DateTime, IPAddress и Event (insert / update / delete). Я знаю, как настроить триггер, но основные проблемы у меня есть с UserID (от входа в PHP-сайт с идентификатором UserID в таблице Users) и, что более важно, IPAddress. Вот что я до сих пор.
CREATE OR REPLACE TRIGGER tr_movie_ai AFTER INSERT OR UPDATE OR DELETE ON Movies FOR EACH ROW DECLARE v_username VARCHAR(20); v_ipaddress VARCHAR(13); v_date NUMBER := FLOOR(SYSDATE); BEGIN SELECT User INTO v_username FROM dual; SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') INTO v_ipaddress FROM dual; INSERT INTO Logs (USERID, DATETIME, IPADDRESS, EVENT, DESCRIPTION) VALUES (user, v_date, v_ipaddress, 'Movie Created', 'Movie created')); END;
Любая помощь будет принята с благодарностью!
Существует две псевдокоманды: uid и пользователь, вы можете использовать их в своем предложении values, а следующий sql возвращает ip-адрес клиента:
SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') FROM dual;