一、触发器
select *from student;
create or replace trigger logStudent after insert on student declare begin dbms_output.put_line('增加成功'); end;
set SERVEROUTPUT on; insert into student(stuno,stuname,stuage) values(3,'ls',11);
总结:
无论修改或者增加多少次,触发器只执行一次,默认是语句触发器,作用于表
语句级触发器:作用于表只触发一次
行级触发器:作用与每一行,每满足一次条件 都执行一次,可以执行多次触发器
数据校验: web前端 onsubmit onblur --> 控制器 Servlet/springMvc if()
-->数据库 触发器
一、闪回
作用:将错误的DML操作并Commit提交过后没有办法回滚(rollback);
还原删除表 drop table xxx;
获取表上的历史记录
show parameter undo;
undo_retention: 900 超过闪存区的数据 必须在900秒内闪回
alter system set undo_retention = 1200 scope= both;
both|memory 当前数据库,重启无效 | spfile 当前数据库无效 重启有效;
要闪回必须知道时间点。
类型:
闪回表中的数据:将表中的数据 回退到历史的某一个点:
闪回删除的表:还原表
查看回收站 表show recyclebin
flashback table 表名 to before drop;
flashback table "回收站中的名" to before drop;
闪回事务查询:undo_sql
闪回数据库:数据库中的数据回退到某一点
闪回归档日志
闪回删除的表:还原表
闪回事务查询:undo_sql
闪回版本查询:
版本信息:伪列
create table tb_version(id number,name varchar2(10));
insert into tb_version values(11,'al');
insert into tb_version values(12,'al');
insert into tb_version values(13,'al');
commit;
insert into tb_version values(21,'al');
insert into tb_version values(22,'al');
insert into tb_version values(23,'al');
commit;
insert into tb_version values(31,'al');
insert into tb_version values(32,'al');
insert into tb_version values(33,'al');
commit;
用管理员授权
alter database add supplemental log data;
伪列查看
select id,name ,versions_xid,versions_operation,versions_starttime,versions_endtime from tb_version versions between timestamp minvalue and maxvalue;
delete from "SCOTT"."TB_VERSION" where ROWID = ''