2020-03-04
https://blog.csdn.net/royalwzy/article/details/61479 有人写过oracle这种功能的触发器吗?
我想写个oracle触发器,记录表结构操作(修改表/修改表注释/修改列信息)
我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
我想写个oracle触发器,记录表结构操作(修改表/修改表注释/修改列信息)
CREATE OR REPLACE TRIGGER
trigger_name
after
alter table ********
ON schema
[WHEN condition]
PL/SQL_block | CALL procedure_name;
评论
有用 0可以用DDL触发器实现,思路如下:
--创建DDL触发器
CREATE OR REPLACE TRIGGER SYS.TRG_DDL_LOGS
AFTER DDL ON DATABASE
DECLARE
sql_text ora_name_list_t;
n PLS_INTEGER;
v_stmt VARCHAR2(2000);
BEGIN
--获取DDL语句
n := ora_sql_txt(sql_text);
FOR i IN 1..n LOOP
v_stmt := v_stmt || sql_text(i);
END LOOP;
--将DDL语句插入到记录DDL操作的表,这个表自己预先创建
INSERT INTO event_table VALUES ('text of
triggering statement: ' || v_stmt);
EXCEPTION
WHEN OTHERS THEN
NULL;
END TRG_DDL_LOGS;
这里的DDL可以换成具体的DDL事件,也可以使用DDL,这样让所有DDL事件生效。
另外这里可以再结合触发器的Event Attribute Functions和sys_context获取额外的DDL会话信息。
评论
有用 0
墨值悬赏