触发器的概述、分类
触发器是一个特殊的过程,不能带参数,触发器的主要作用是对表进行完整性的约束。
触发器组成---------------触发事件
-----------------触发对象
事务的概述
什么是事务:事务是数据库中重要的机制,用于确保数据完整性和并发处理的能力,他将一条/一组sql语句当作一个逻辑上的单元,用来保证这些语句都成功/失败。
事务的特性:
事务具有ACID四大特性:
某种意义上说,原子性是手段,一致性是目的,通过原子性的手段达到一致性的目的。
A: 原子性: 做都做 不做都不做-------手段
C:一致性: 做事务操作的前后,数据保持一致性-----目的
I: 隔离性: 隔离性越强,并发性越弱
---------用for update 来实现事务的隔离性 通过锁的特性:
|
是一个加锁过程
D:永久性:同一个事务在commit 之后不能rollback
notes: oracle中 DML语言 发生时 oracle 只操作内存,并不能自动提交
行触发器:
DML 行触发器:
example:
create or replace trigger mytri
after delete on d for each row
begin
delete from e where e.id=:old.id;
end mytri;
create or replace trigger mytri
after insert on e
begin
insert into d value(:new.id,'name');
end;
行触发器的工作原理是 俩个重要的内存表
old new
insert ---- ok
update ok ok
delete ok ----
create or replace trigger mytri
after update on d for each row
begin
update e set id=:new.id where id=:old.id;
end;
notes:触发器语句内不能有commit和rollback
用触发器来控制表
---------
create or replace trigger mytri
after delete on e for each row
begin
if
ld.id='0001' then
raise_application_error(-20000,'不能删除');
end if; |
end; 范围是(-20999,-20000)
语句级触发器:
example:
create table mylog(
curr_user varchar2(10),
curr_date date,
curr_act char(1));
create or replace trigger mytri
after insert or update or delete on e
begin
if inserting then
insert into mylog values(user,sysdate,'I');
else if updating then
insert into mylog values(user,sysdate,'U');
else
insert into mylog values(user,sysdate,'D');
end if;
end;
触发器和序列的共同应用 实现表主键自增
create sequence myseq
start with 1
increment by 1
order
no cycle;
create or replace trigger mytri
before insert on e
declare
sn number(4);
begin
select myseq.nextval into sn from dual;
:new.id=sn;
end;
oracle 中的替换触发器的应用:
笔者解读:oralce中替换触发器是行级触发器中的特例,核心思想是利用了内存中的new表和old表
用替换触发器可以解决视图中更新多个基表的操作
在oracle中 替换触发器只能建立在视图上
example:
create or replace trigger view_tri
instead of insert on myview for each row
begin
insert into d values(:new.id,:new.dname);
insert into e(eid,ename,sex,id) values(:new.eid,:new.ename,:new.sex,:new.id);
end;
分享到:
相关推荐
调试oracle触发器文档,自己整理的,不懂的可以聊系我
1、行级触发器不支持 update 、select 、delete 对自身表的操作。 2、表级触发器 不支持 :new 和 :old对象 所以想要触发器对自身表数据做修该,则用行级触发器得到 :new 和 :old对象中的相关数据,然后将这样的数据...
个人亲测oracle触发器调用java程序
oracle insert数据成功之后调用触发器,触发器调用存储过程,存储实时调用java http
oracle触发器功能介绍内附具体说明和简单介绍
oracle_触发器的种类和触发事件,很详细!
oracle触发器语法要点
介绍数据库触发器的PPT。内容包括:存储过程的创建与使用;存储过程的查看、编辑和删除;触发器的创建与使用;触发器的查看、编辑、重命名和删除
oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例
Oracle 触发器 备份 表数据
利用oracle 系统触发器防止用户使用drop table 或truncate table 命令。
触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。数据库触发器有以下的作用:
ORACLE触发器、内置程序包教学.doc )
oracle 触发器 调用 存储过程 Oracle自治事务(Autonomous Transaction)
Oracle触发器与存储过程高级编程Oracle触发器与存储过程高级编程
Oracle触发器的概念和类型
oracle触发器与存储过程高级编程
详细整理了oracle中before和after的使用问题
oracle触发器执行顺序.pdf
本文介绍了Oracle触发器的使用心得。