我有一个班上的一个项目。当我们的两个表对它们进行了更改时,我们需要创建一个日志:insert / update /delete。我们需要使用Oracle触发器和PL-SQL。在日志文件中,我们需要记录UserID,DateTime,IPAddress和Event(插入/更新/删除)。我知道如何设置触发器,但是我遇到的主要问题是UserID(从以UserID在Users表中登录到PHP站点),更重要的是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和user,您可以在values子句中使用它们,并且以下sql返回客户端的ip地址:
SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') FROM dual;