Oracle入门(十四.23)之管理触发器

一、触发器需要特权

要在模式中创建触发器,需要:
•CREATE TRIGGER系统特权
•触发器主体中引用的其他架构中的对象的普通对象特权(SELECT,UPDATE,EXECUTE等)
•与触发器关联的表或视图上的ALTER特权。

触发器主体中的语句使用触发器所有者的特权,而不是执行触发触发器的操作的用户的特权。 下面展示了一个例子。


二、触发器所需的特权示例

用户MOE需要创建以下触发器:

CREATE OR REPLACE TRIGGER upd_tom_emp
AFTER UPDATE ON tom.employees
BEGIN
 INSERT INTO mary.log_table VALUES(USER,SYSDATE);
 sharon.calledproc;
END;

Moe需要:

• CREATE TRIGGER
• ALTER on TOM.EMPLOYEES
• INSERT on MARY.LOG_TABLE

• EXECUTE on SHARON.CALLEDPROC.


三、在数据字典中查看触发器

可以在以下数据字典视图中看到触发器信息:

•USER_OBJECTS:对象名称和对象类型(与架构中的所有其他对象类型一样)
•USER_TRIGGERS:触发器的详细代码和状态

•USER_ERRORS:触发器的PL / SQL语法错误(编译错误)

使用USER_TRIGGERS


*并非所有列都显示在这里


四、使用USER_TRIGGERS查看触发信息

此示例显示了触发事件,时间,触发器类型,状态以及RESTRICT_SALARY触发器的详细正文代码:

SELECT trigger_name, trigger_type, triggering_event,
 table_name, status, trigger_body
 FROM USER_TRIGGERS
 WHERE trigger_name = 'RESTRICT_SALARY';

改变触发器的状态

禁用或启用数据库触发器:

ALTER TRIGGER trigger_name DISABLE | ENABLE;

禁用或启用表格的所有触发器:

ALTER TABLE table_name DISABLE | ENABLE ALL TRIGGERS;

重新编译表的触发器:

ALTER TRIGGER trigger_name COMPILE;


五、删除触发器

要从数据库中删除触发器,请使用DROP TRIGGER语句:

DROP TRIGGER trigger_name;
例:
DROP TRIGGER secure_emp;
注意:删除表格时,会删除表格上的所有触发器。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值