1、数据库触发器是一个与表相关联的、存储的plsql程序。
2、语句级触发器:在指定的操作语句之前或之后执行一次,不管这条语句影响了多少行;
行级触发器:触发语句作用的每一条语句都被触发,使用:old和:new伪记录变量。
:old 和:new代表的是同一条记录,
:old 操作之前该记录的值;
:new 操作之后该记录的值;
简单理解就是:语句级触发器:针对的是表;行级触发器:针对的是行。
3、语法格式:
create or replace trigger 触发器名称
after|before
delete|update|insert
on 表名
for each row --行级触发器
declare --如果没有变量声明可省略
begin
程序块;
end;
4、例子:
要求:员工表删除一天数据后,需记录在日志表中。
员工表如下:
实现:
--当emp表删除一行数据时,往日志表里添加一行
create or replace trigger delemplogs
after delete on emp
for each row
declare
pragma autonomous_transaction;
begin
insert into EMP_log
select * from emp where id = :old.id;
commit;
end;
5、触发器和快照都能实现数据库的备份,
区别:触发器备份是同步的;快照是异步的。
6、遇到的问题:
<1>以sysdba权限登录的用户没办法建立触发器!
https://blog.csdn.net/qiankui520/article/details/10416797
<2>关于触发器中的事物控制