1.事务: 一系列连续操作,不可分割,要不全部成功,全部失败
-- 事务结果: 一个: 成功或失败
--特征: A(原子性) C(一致性) I(个理性) D(持续性)
--有2个经典关键词: commit(提交) rollback (回滚)
函数和存储过程的区别:标识符不同;函数值有返回值,过程没有;函数在sql语句中可以直接调用,而过程不能直接调用。
insert into stu(id, age) values(100,123);
commit;
rollback;
transcation 事务
--设置事务保存点,实现回到一个时刻
--设置保存点 savepoint 保存点名字
savepoint a;
insert into stu values(1,1);
insert into stu values(2,2);
savepoint b;
update stu
set id=3
where id=2;
--还原
rollback to a;
--保存点可以建立多个,可以回到任意一个保存点
--小结: 如何创建保存点 : savepoint 保存点名
-- 提交或回滚 commit rollback to 保存点名
-- 事务提交前可以做任意更改,但是若双方对同一个对象执行操作,则会锁定 ,必须等提交或回滚以解锁
2.--隔离级别:
--一个事务同其他事务隔离的程度
--Oracle支持2种: read committed (读取已提交事务) serialziable (串行化)
--为何要有隔离级别: 为了避免并发访问问题: 1)脏读(读了未提交数据) 2)不可重复读(每次可以读取到不相同数据) 3)幻读(插入新行,读取新行数据
--如何设置Oracle隔离级别
--设置为读取已提交
--1. 开启一个事务T1,设置隔离级别叫读取已提交
set transaction isolation level read committed;
--2.执行插入操作
insert into stu values(4,4);
--3.提交
commit;
--4.查看数据
select * from stu ;
3.--过程
--概念: 也叫存储过程,指存储在数据库中供所有用户程序调用的子程序 。
--优点: 它有名字,可以重复运行。 同时还可以提供运行时的参数
--创建过程的语法: create or replace procedure 过程名(参数名 参数类型 数据类型)
-- as/is
-- pl/sql程序
--参数类型(分类)有2种:
--输入参数: in
--输出参数: out
--举例: 建立一个过程,输出hello
create or replace procedure pro_1
as
begin
dbms_output.put_line('hello');
end;
--如何运行