ROW_NUMBER,自治事务--工作备忘2016/1/7
来源:互联网 发布:淘宝收到空包裹怎么办 编辑:程序博客网 时间:2024/04/29 23:57
2016/1/6 工作技术备忘
1、
语法: ROW_NUMBER() OVER(PARTITION BY COL1 ORDER BY COL2)
说明表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
例:
初始化数据
create table employee (empid int ,deptid int ,salary decimal(10,2))
insert into employee values(1,10,5500.00)
insert into employee values(2,10,4500.00)
insert into employee values(3,20,1900.00)
insert into employee values(4,20,4800.00)
insert into employee values(5,40,6500.00)
insert into employee values(6,40,14500.00)
insert into employee values(7,40,44500.00)
insert into employee values(8,50,6500.00)
insert into employee values(9,50,7500.00)
数据显示为
empid deptid salary
----------- ----------- ---------------------------------------
1 10 5500.00
2 10 4500.00
3 20 1900.00
4 20 4800.00
5 40 6500.00
6 40 14500.00
7 40 44500.00
8 50 6500.00
9 50 7500.00
需求:根据部门分组,显示每个部门的工资等级
预期结果:
empid deptid salary rank
----------- ----------- --------------------------------------- --------------------
1 10 5500.00 1
2 10 4500.00 2
4 20 4800.00 1
3 20 1900.00 2
7 40 44500.00 1
6 40 14500.00 2
5 40 6500.00 3
9 50 7500.00 1
8 50 6500.00 2
SQL脚本:
SELECT *, Row_Number() OVER (partition by deptid ORDER BY salary desc) rank FROM employee
2、自治事务
PRAGMA AUTONOMOUS_TRANSACTION
简单来说,就是独立于当前主事务(DML操作,需commit,rollback) 的独立子事务操作,不受主事务的 commit,rollback 影响,同样,内部的commit,rollback也不影响主事务
解释:
数据库事务是一种单元操作,要么是全部操作都成功,要么全部失败。在Oracle中,一个事务是从执行第一个数据管理语言(DML)语句开始,直到执行一个COMMIT语句,提交保存这个事务,或者执行一个ROLLBACK语句,放弃此次操作结束。
事务的“要么全部完成,要么什么都没完成”的本性会使将错误信息记入数据库表中变得很困难,因为当事务失败重新运行时,用来编写日志条目的INSERT语句还未完成。
针对这种困境,Oracle提供了一种便捷的方法,即自治事务。自治事务从当前事务开始,在其自身的语境中执行。它们能独立地被提交或重新运行,而不影响正在运行的事务。正因为这样,它们成了编写错误日志表格的理想形式。在事务中检测到错误时,您可以在错误日志表格中插入一行并提交它,然后在不丢失这次插入的情况下回滚主事务。
因为自治事务是与主事务相分离的,所以它不能检测到被修改过的行的当前状态。这就好像在主事务提交之前,它们一直处于单独的会话里,对自治事务来说,它们是不可用的。然而,反过来情况就不同了:主事务能够检测到已经执行过的自治事务的结果。
要创建一个自治事务,您必须在匿名块的最高层或者存储过程、函数、数据包或触发的定义部分中,使用PL/SQL中的PRAGMA AUTONOMOUS_TRANSACTION语句。在这样的模块或过程中执行的SQL Server语句都是自治的。
触发无法包含COMMIT语句,除非有PRAGMA AUTONOMOUS_TRANSACTION标记。但是,只有触发中的语句才能被提交,主事务则不行。
例: http://blog.sina.com.cn/s/blog_4f925fc30100h8ld.html
- ROW_NUMBER,自治事务--工作备忘2016/1/7
- -自治事务
- 自治事务
- 自治事务
- 自治事务
- 自治事务
- 自治事务
- 自治事务
- 自治事务
- 自治事务
- 嵌套事务,自治事务
- 测试一下自治事务
- PRAGMA AUTONOMOUS_TRANSACTION自治事务
- Oracle的自治事务
- Oracle自治事务读书笔记
- 自治事务 PRAGMA AUTONOMOUS_TRANSACTION
- Oracle自治事务介绍
- 自治事务触发器问题解答
- 从运维角度浅谈 MySQL 数据库优化
- 第1章第1节练习题6 删除重复值
- eclipse 安装svn插件
- [HNOI2004]宠物收养所 (Splay)
- apache poi导出Excel或Pdf文件
- ROW_NUMBER,自治事务--工作备忘2016/1/7
- mmap实现机制
- win10 安装程序显示“为了对电脑进行保护,已经阻止此应用” 管理员已阻止你运行此应用
- 基于C#的socket编程的TCP异步实现
- ImageView的ScaleType属性
- 常用设计模式——模版
- Spring声明式事务管理与配置介绍
- 何时用Delegate和何时用Block?
- css菜单样式反转