数据库视频第八章(2)-游标,事务,锁

第八章 游标,事务和锁

**游标概述**:游标是一种数据访问机制,它允许用户访问单独的数据行,而不是对整个行集进行操作。用户可以通过单独处理每一行逐条收集信息并对数据逐行进行操作,这样可以降低系统开销和潜在的阻隔情况。用户也可使用这些数据生成sql代码并立即执行或输出。 **游标主要包括以下两部分:** 1.游标结果集 由定义游标的select语句返回的行的集合 2.游标位置 指向这个结果集中的某一行的指针 **游标的特点:** 游标返回一个完整的结果集,但允许程序设计语言只调用集合中的一行 允许定位在结果集的特定行 从结果集的当前位置检索一行或多行 支持对结果集中当前位置的行进行数据修改 可以为其他用户对显示结果集中的数据库所做的更改提供不同级别的可见性支持 提供脚本,存储过程和触发器中使用的访问结果集中数据的T-sql语句 **游标的声明** ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190818204800951.png) **游标的操作** 打开游标: open cursor_name 检索游标:fetch next/prior/first/last/absolute n from cursor_name into @variable_name 关闭游标:close cursor_name 释放游标:deallocate cursor_name
declare stu_cursor scroll cursor for
select 姓名 from 学生信息1

declare @name  varchar(20)
open stu_cursor
fetch last from stu_cursor  into @name
fetch absolute 2 from stu_cursor into @name
print @name
open stu_cursor		           --打开游标
close stu_cursor		       --关闭游标
deallocate stu_cursor   	   --释放游标

判断游标提取数据是否成功
@@fetch_status 下列三种情况
0 fetch语句成功
-1 fetch 语句失败或行不在结果集中
·2 提取的行不存在
在这里插入图片描述
事务
概念:当多个用户同时对数据进行操作时,可能出现问题,这时候就需要用到事务,事务一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起。
例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。

在sql server 2008系统中主要使用下列4条语句
Begin transaction 开始事务
Commit transaction 提交事务或者结束事
Rollback transaction 回滚事务
Save transaction 保存事务
事务模式
1.自动提交事务:每条单独的语句都是一个事务,例如update语句,insert语句
2.显示事务:每个事务均已begin transaction语句显示开始,以commint 或rollback语句显示结束
3.隐式事务:在前一个事务完成时新事务隐式启动,但每个事务仍以commit或rollback语句显示完成
4.批处理级事务:只能应用于多个活动结果集(MARS),在MARS会话中启动的T-sql显式或隐式事务变成批处理级事务,当批处理完成时没有提交或回滚的批处理级事务自动右sql server进行回滚


概念:所谓锁,就是一个事务可以向系统提出请求,对被操作的数据加锁(lock)。其它事务必须等到此事务解锁(unlock)之后才能访问该数据。从而,在多个用户并发访问数据库时,确保不互相干扰。可锁定的单位是:行,页,表,盘区和数据库。
锁的类型
1.共享锁(s):用于读操作
多个事务可封锁一个共享单位的数据
任何事务都不能修改加s锁的数据
通常是加s锁的数据被读取完毕,s锁立即被释放
2.独占锁(X):用于写操作
仅允许一个事务封锁此共享数据
其他任何事务必须等到x锁被释放才能对该数据进行访问
X锁一直到事务结束时才能被释放
3.更新(U)锁
用来预定要对此页加X锁,它允许其他事务读,但不允许施加U锁或者X锁。
当被读取数据页要被更新时,则升级为X锁
U锁一直等到事务结束时才能被释放
死锁:执行程序中两个或多个线程发生永久堵塞(等待),每个线程都在等待被其他线程占用并堵塞了的资源。
比如:如果线程A锁住了记录1并等待记录2.而线程B锁住了记录2并等待记录1,这样两个线程就发生了死锁现象。

发布了45 篇原创文章 · 获赞 10 · 访问量 6218

猜你喜欢

转载自blog.csdn.net/wtt15100/article/details/99709111