触发器
—— 在事件发生时隐式地自动运行的PL/SQL程序块,不能接收参数,不能被调用。
create or replace trigger 触发器名
触发器必须由事件才能触发。触发器的触发事件分可为3类,分别是DML事件、DDL事件和数据库事件。
事件类型 | 事件 | 描述 |
DML事件 | INSERT | 在表或视图中插入数据时触发 |
UPDATE | 修改表或视图中的数据时触发 | |
DELETE | 在删除表或视图中的数据时触发 | |
DDL事件 | CREATE | 在创建新对象时触发 |
ALTER | 修改数据库或数据库对象时触发 | |
DROP | 删除对象时触发 | |
数据库事件 | STARTUP | 数据打开时触发 |
SHUTDOWN | 在使用NORMAL或IMMEDIATE选项关闭数据库时触发 | |
LOGON | 当用户连接到数据库并建立会话时触发 | |
LOGOFF | 当一个会话从数据库中断开时触发 | |
SERVERERROR | 发生服务器错误时触发 |
DML触发器注意问题:
①如果有多个触发器被定义成为相同时间、相同事件触发,且最后定义的触发器是有效的,
则最后定义的触发器被触发,其他触发器不执行。
②一个触发器可由多个不同的DML操作触发。在触发器中,可用INSERTING、DELETING、UPDATING谓词来区别
不同的DML操作。这些谓词可以在IF分支条件语句中作为判断条件来使用。
③触发器体内禁止使用COMMIT、ROLLBACK、SAVEPOINT语句,也禁止直接或间接地调用含有上述语句的存储过程。