Oracle 数据库有 4 种触发器
- DML:当发出UPDATE、INSERT、DELETE命令就可以触发已定义好的 DML 触发器
语法:create or replace trigger trigger_nameafter|before insert|update|deleteon table_namefor each row
- Instead-of:向一个由多个表联接成的视图作 DML 操作时可以用 Instead-of 触发器
语法:create or replace trigger trigger_nameinstead of insert|update|deleteon view_namefor each row
- DDL:当发出CREATE、ALTER、DROP、TRUNCATE命令时会触发已定义好的DDL触发器,这种触发器可以用来监控某个用户或整个数据库的所有对象的结构变化
语法:create or replace trigger trigger_namebefore|after create|alter|drop|truncateon schema|database
- DB:当STARTUP、SHUTDOWN、LOGON、LOGOFF数据库时就会触发DB事件触发器,这种触发器可以用来监控数据库什么时候关闭/打,或者用户的LOGON/LOGOFF数据库情况
语法:create or replace trigger trigger_namebefore|after startup|shutdown|logon|logoffon database
一般应用系统中用到 DML、Instead-of;DDL、DB 两种触发器是 DBA 管理数据库用得比较多
要创建 DDL 和 DB 这两种触发器必须有 DBA 的权限