oracle触发器之DML行级触发器

文章讲述了如何使用SQL的DML操作(如insert、delete、update)时,通过创建触发器在每个操作后记录到日志表中,记录用户、IP地址和操作时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DML操作(insert、delete、update),SQL语句影响了多少行记录,触发器就触发多少次。

例子如下:

-- 创建一张日志表,
CREATE TABLE TEST_LOG (
  "TIMESTAMP" DATE,                     -- 时间
  "USER_NAME" VARCHAR2(30 BYTE),        -- 操作数据的数据库用户
  "IP_ADDR" VARCHAR2(20 BYTE)           -- ip
)
-- TEST_BIAO 为 被监控的表
-- TEST_BIAO_WATCHER 为 触发器的名
-- AFTER INSERT OR UPDATE OR DELETE 为 增删改操作后记录日志表
-- FOR EACH ROW 为 行级
CREATE OR REPLACE TRIGGER TEST_BIAO_WATCHER
AFTER INSERT OR UPDATE OR DELETE ON TEST_BIAO
FOR EACH ROW
DECLARE
    v_user VARCHAR2(30);           -- 操作数据的数据库用户
    v_ip VARCHAR2(30);             -- ip
	v_operation_time TIMESTAMP;    -- 时间
BEGIN
    -- 获取数据库用户、IP、时间 并 赋值
    SELECT USER, SYS_CONTEXT('USERENV', 'IP_ADDRESS'), SYSDATE INTO v_user, v_ip, v_operation_time FROM DUAL;
    
    -- 插入数据到日志表
    INSERT INTO TEST_LOG (USER_NAME, IP_ADDR, TIMESTAMP)
    VALUES (v_user, v_ip, v_operation_time);
END;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值