源码-PL/SQL从入门到精通-第十一章-事务处理和锁定
来源:互联网 发布:mac lol 编辑:程序博客网 时间:2024/05/02 06:44
随笔:
基本概念早就知道,重点不在于会不会,而在于:会多少?做过什么?怎么做?我的需求你什么时候能实现?...
表锁定模式:row share, row exclusive, share lock, share row exclusive, exclusive,暂时不懂,还需继续努力。
--第11章开始--代码11.1 使用Commit语句提交事务DECLARE dept_no NUMBER (2) := 31;BEGIN --开始事务 INSERT INTO dept VALUES (dept_no, '市场部', '北京'); --插入部门记录 INSERT INTO emp --插入员工记录 VALUES (6993, '威尔', '销售', NULL, TRUNC (SYSDATE), 5000,300, dept_no); --提交事务 COMMIT;END;select * from dept;select * from emp;DELETE FROM emp WHERE deptno=70;DELETE FROM dept WHERE deptno=70;COMMIT;--代码11.2 使用rollback语句回滚事务 (不回滚也没啥事吧?真个PL/SQL是作为一个整体执行的,一部分出错,整体都不执行吧)DECLARE dept_no NUMBER (2) := 71;BEGIN --开始事务 INSERT INTO dept VALUES (dept_no, '市场部', '北京'); --插入部门记录 INSERT INTO dept VALUES (dept_no, '后勤部', '上海'); --插入相同编号的部门记录 INSERT INTO emp --插入员工记录 VALUES (7997, '威尔', '销售人员', NULL, TRUNC (SYSDATE), 5000,300, dept_no); --提交事务 COMMIT;EXCEPTION WHEN DUP_VAL_ON_INDEX THEN --捕足异常 DBMS_OUTPUT.PUT_LINE(SQLERRM); --显示异常消息 ROLLBACK; --回滚异常END;--代码11.3 使用保存点局部回滚DECLARE dept_no NUMBER (2) :=91;BEGIN --开始事务 SAVEPOINT A; INSERT INTO dept VALUES (dept_no, '市场部', '北京'); --插入部门记录 SAVEPOINT B; INSERT INTO emp --插入员工记录 VALUES (7997, '威尔', '销售', NULL, TRUNC (SYSDATE), 5000,300, dept_no); SAVEPOINT C; INSERT INTO dept VALUES (dept_no, '后勤部', '上海'); --插入相同编号的部门记录 --提交事务 COMMIT;EXCEPTION WHEN DUP_VAL_ON_INDEX THEN --捕足异常 DBMS_OUTPUT.PUT_LINE(SQLERRM); --显示异常消息 ROLLBACK TO B; --回滚异常END;SELECT * FROM dept;DELETE FROM dept WHERE deptno=80;COMMIT;--代码11.4 只读事务使用示例DECLARE v_1981 NUMBER(2); v_1982 NUMBER(2); v_1983 NUMBER(2);BEGIN --SET TRANSACTION必须在事务的第1条语句,因此可以在COMMIT或ROLLBACK后面。 COMMIT; SET TRANSACTION READ ONLY NAME '统计年度入职数据'; --使用NAME为事务命名 --使用SELECT语句执行查询 SELECT COUNT(empno) INTO v_1981 FROM emp WHERE TO_CHAR(hiredate,'YYYY')='1981'; SELECT COUNT(empno) INTO v_1982 FROM emp WHERE TO_CHAR(hiredate,'YYYY')='1982'; SELECT COUNT(empno) INTO v_1983 FROM emp WHERE TO_CHAR(hiredate,'YYYY')='1983'; COMMIT; --终止只读事务 DBMS_OUTPUT.PUT_LINE('1981年入职人数:'||v_1981); --显示统计的结果 DBMS_OUTPUT.PUT_LINE('1982年入职人数:'||v_1982); DBMS_OUTPUT.PUT_LINE('1983年入职人数:'||v_1983); END; --记录锁定SELECT * FROM emp WHERE deptno=10 FOR UPDATE;COMMIT;--记录锁定(no wait)SELECT * FROM emp WHERE deptno=10 FOR UPDATE NOWAIT;COMMIT;
0 0
- 源码-PL/SQL从入门到精通-第十一章-事务处理和锁定
- 源码-PL/SQL从入门到精通-第三章-变量和类型-Part 1
- 源码-PL/SQL从入门到精通-第三章-变量和类型-Part 2
- 源码-PL/SQL从入门到精通-第三章-变量和类型-Part 3
- 源码-PL/SQL从入门到精通-第二章-PL/SQL基本概念-Part 1
- 源码-PL/SQL从入门到精通-第二章-PL/SQL基本概念-Part 2
- 源码-PL/SQL从入门到精通-第二章-PL/SQL基本概念-Part 3
- 源码-PL/SQL从入门到精通-第四章-PL/SQL控制语句
- 源码-PL/SQL从入门到精通-第十八章-PL/SQL性能优化建议-Part 1
- 源码-PL/SQL从入门到精通-第十八章-PL/SQL性能优化建议-Part 2
- 源码-PL/SQL从入门到精通-第九章-SQL内置函数-Part 1
- 源码-PL/SQL从入门到精通-第九章-SQL内置函数-Part 2
- 源码-PL/SQL从入门到精通-第九章-SQL内置函数-Part 3
- 源码-PL/SQL从入门到精通-第十六章-动态SQL语句-Part 1
- 源码-PL/SQL从入门到精通-第十六章-动态SQL语句-Part 2
- 源码-PL/SQL从入门到精通-第五章-管理数据表
- 源码-PL/SQL从入门到精通-第六章-查询数据表-Part 1
- 源码-PL/SQL从入门到精通-第六章-查询数据表-Part 2
- (莲花绽放)animation
- 堆排序 Heap Sort
- 使用Android Studio导入源码
- 经典分类算法—朴素贝叶斯笔记
- 数据结构学习之路----------线性表顺序存储结构插入和删除节点平均移动次数
- 源码-PL/SQL从入门到精通-第十一章-事务处理和锁定
- [ISINK]MT6328 ISINK呼吸灯模式配置方法
- 【BZOJ】1412 【ZJOI2009】狼和羊的故事
- 15 个 Android 通用流行框架大全
- ServletContext初识
- DQL,DML,DDL,DCL的概念与区别
- DEVICE_ATTR的使用
- SIFT中的尺度空间和传统图像金字塔
- Android Image 圆角图片与圆形图片 ImageView