上图:(点击查看大图)
重点记住概念和特点就好,对于隔离级别用处不太大,不过面试的时候很有可能被问及,事务的特点中原子性没有做出解释,主要因为这是4个特点中最难理解的最抽象的一个,但是原子性我们可以理解为:封装.意思就是说,整个事务的运行对外是不可见的,用户只能看到运行前的状态和运行后的状态.
今天的第2大块内容就是另人爱又怕的触发器,它比较像JAVA中的Filter类,在执行SQL语句时首先自动调用对应触发器,这很方便我们解决不少业务问题,但是一旦触发器使用较多,会使系统过于灵活而导致不可跟踪,不可维护,所以又要谨慎使用,具体概念如下:(点击查看大图)
触发器和存储过程的比较:
触发器 存储过程
编写 无参数,无返回值 都可以有,当然也可以没有
编写 不能commit或rollback 可以
调用方式 事件发生时自动调用 手工调用
操作对象 基于某一张表 与表无关
补充:
事务的实现机制:事务处理是通过日志文件实现的,当系统因意外重启时,系统会首先调用日志文件,日志文件中如果记录了事务的结束标志,则表示事务处理完成,如果日志文件中没有出现事务的结束标志,这时系统会将对应的事务反向执行一次,以回归到事务执行前的状态,相当于回滚.
每日一问:
如何避免死锁?
答:死锁是因为两个用户同用一个资源而产生的.
解决的方法:指定访问共享资源的顺序.
如何解决死锁?
答:当用户不能查询或不能更新时,就可能发生了死锁
解决方法:在一个死循环中检查系统的锁,如果发现死锁对象,则直接KILL掉!
每日一练:
过滤器,目的是为了方便记忆:
CREATE OR REPLACE TRIGGER tr_autoid
BEFORE INSERT OR UPDATE OR DELETE ON t_t1
FOR EACH ROW
DECLARE
num t_t1.t_id%TYPE;
BEGIN
IF inserting THEN
SELECT Max(t_t1.t_id) INTO num FROM t_t1;
:NEW.t_id := nvl(num,0)+1;
END IF;
IF updating THEN
:NEW.t_name := initcap(:NEW.t_name);
END IF;
IF deleting THEN
IF :OLD.t_name='Lei' THEN
raise_application_error(-20020,'该用户是超级用户,不能删!');
END IF;
END IF;
END;
<!-- -->
分享到:
相关推荐
Oracle学习笔记——day01 学习的好东西Oracle学习笔记——day01
Oracle学习笔记——day02 学习的好东西 Oracle学习笔记——day02
Oracle学习笔记——day04 学习的好东西 Oracle学习笔记——day04
Oracle学习笔记——day03 学习的好东西 Oracle学习笔记——day03
Oracle学习笔记——day05 学习的好东西 Oracle学习笔记——day05
Oracle 11g是最具代表性的高端关系型数据库管理系统,它在世界各地的大型商务数据库应用系统中被广泛应用。本书设计了大量的应用情景,介绍了数据库管理员和开发人员常用的管理、维护和优化Oracle 11g数据库的技术和...
oracle中记录用户登录信息的触发器的例子,有具体操作过程,包括错误信息及解释,这个例子是自己为某企业的oracle安全管理的具体例子
Oracle学习笔记精华版Oracle学习笔记精华版Oracle学习笔记精华版Oracle学习笔记精华版
Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记
Oracle9i备课笔记——吕海东 第1讲 Oracle9i简介 目的: 1. 了解数据库的发展,关系数据库的基本原理。 2. 了解目前市场上流行的数据库产品及特点 3. 了解Oracle数据库的发展 4. 掌握Oracle9i产品系列 5. 掌握Oracle...
OAF学习笔记 博文链接:https://jamsa.iteye.com/blog/167874
oracle学习笔记 oracle学习笔记oracle学习笔记 oracle学习笔记