查看触发器
触发器是一种特殊的存储过程,从被创建之日起,触发器就被存储在数据库中,直到被删除。触发器与一般存储过程或者存储函数的区别在于触发器可以自动执行,而一般的存储过程或者存储函数需要调用才能执行。
Oracle提供检索与触发器相关信息的数据字典。与触发器相关的数据字典主要包括以下几种:
- USER_TRIGGERS: 存储当前用户所拥有的触发器。
- DBA_TRIGGERS: 存储管理员所拥有的触发器。
- ALL_TRIGGERS: 存储所有的触发器。
- USER_OBJECTS: 存储当前用户所拥有的对象,包括触发器。
- DBA_OBJECTS: 存储管理员所拥有的对象,包括触发器。
- ALL_OBJECTS: 存储数据库中所有的对象,包括触发器。
USER_TRIGGERS表主要列的说明如下表:
列名 | 描述 |
---|---|
TRIGGER_NAME | 触发器名 |
TRIGGER_TYPE | 触发时间AFTER和BEFORE,以及是行级触发器或语句级触发 |
TRIGGERING_EVENT | 触发器的事件 |
TABLE_NAME | 与触发器相关联的表或视图 |
BASE_OBJECT_TYPE | 与触发器相关联的对象类型:表、视图、模式和数据库 |
WHEN_CLAUSE | 触发器的WHEN子句代码 |
STATUS | 触发器的状态:启动或禁用 |
DESCRIPTION | 类型或事件信息的概述 |
TRIGGER_BODY | 触发器的PL/SQL块 |
启用和禁用触发器
Oracle提供的ALTER TRIGGER语句用于启用和禁用触发器。禁用触发器就将它挂起,它仍然存储在数据库中,但是不会被触发,就好像根本没有触发器一样。禁用触发器常常用在当DBA有大量记录要导入到数据库中时,且DBA知道这些数据时安全和可靠的。但禁用触发器后可以节省大量的处理时间。
禁用和启用触发器的语法如下:
ALTER TRIGGER [schema.] trigger_name DISABLE | ENABLE;
修改触发器
当创建的触发器需要修改时可以使用 REPLACE 关键字。
如果在SQL Plus中创建触发器时带上了OR REPLACE关键字,可以完成过程的修改,也就是覆盖。
删除触发器
对应不用的触发器除了设置禁用属性外也可以直接将其删除。可以利用如下两种方式删除触发器:
- 第一种方式利用SQL语句删除触发器。
DROP TRIGGER [schema.]trigger_name;
- 第二种方式,利用PL/SQL Developer工具删除触发器。选中需要删除的触发器,右击触发器,在弹出的快捷菜单中选择DROP即可。