-
有for eachrow为行级触发器,没有则为语句级触发器查看全部
-
创建触发器的语法 create or replace trigger 触发器名称 before (after) delete (insert update) [of 列名] --of 列名表示该列发生变化时,触发该触发器 on 表名 [for each row [when(条件)]] --(行级触发器的关键字)语句级触发器没这段 PLSQL块查看全部
-
/** *复杂的安全性检查:非工作时间禁止插入员工 */ create or replace trigger security_check before insert on emp declare begin if (to_char(sysdate,'day') in ('星期六','星期天')) OR (to_number(to_char(sysdate,'hh24'))not between 9 and 18) then raise_application_error(-20001,'非工作时间禁止添加员工'); end if; end; / /** * 数据的确认:涨工资后应该大于涨前 */ create or replace trigger raise_check before update on emp for each row begin if :old.sal > :new.sal then raise_application_error(-20002,'涨工资后应该大于涨前'); end if; end; / /** *数据库的审计:记录涨工资超过6000的员工 */ create table audit_info(msg varchar2(200)); create or replace trigger over6000 after update on emp for each row begin if :new.sal > 6000 then insert into audit_info(msg) values(:new.empno || ' ' || :new.ename || ' 涨前: '|| :old.sal ||' 涨后: ' || :new.sal); end if; end; / /** * 数据的备份和同步 */ create table emp_bak as select * from emp; create or replace trigger emp_backup after update on emp for each row begin update emp_bak set sal= :new.sal where empno = :new.empno; end; /查看全部
-
1.oracle自定义事务错误类型error_number_in 之容许从 -20000 到 -20999 之间 2.触发器无需commit,也不能写commit。触发器和触发它的DML是同一个事务,DML提交了,触发器的操作也提交了,要不就一起回滚了 当然,如果你一定要在触发器里写COMMIT 那就用自治事务 相当于一个事务里的子事务查看全部
-
:old 和:new 的实例说明。查看全部
-
禁止非工作时间插入新员工, raise_application_error(); 抛出一个异常,终止 insert 的执行查看全部
-
创建触发器的语法。查看全部
-
触发器的应用场景。查看全部
-
例一:查看全部
-
语句级触发器(针对的是表) -在指定的操作语句操作之前或之后执行一次,不管这条语句执行了多少行。 行级触发器(针对的是行) -触发语句作用的每一条记录都被触发。在行级触发器中使用:old :new伪记录变量,识别值得状态。查看全部
-
触发器应用查看全部
-
触发器类型 二 行级触发器查看全部
-
触发器类型 一 语句级触发器查看全部
-
1.创建触发器的语法 create or replace trigger 触发器名称 before (after) delete (insert update) [of 列名] --of 列名表示该列发生变化时,触发该触发器 on 表名 [for each row [when(条件)]] --(行级触发器的关键字)语句级触发器没这段 PLSQL块查看全部
-
数据的备份和同步查看全部
举报
0/150
提交
取消