一:事物
定义:访问或修改数据库内容的程序的执行称为事物。(事物是一个不可分割的工作逻辑单元)
作用:在数据库的实际应用中,有时候要把包含有多个步骤的指令当作一个整体来运行。这个整体要么全部运行成功,要么全部运行失败,这就要考虑事物。
必备 属性(简称ACLD属性):原子性,一致性,隔离性,持久性(四属性解释 sqlserver数据库开发P93)
三种模式:
a.显示事务:用户使用T-SQL明确定义开始和结束的事务
begin(开始)/commit(提交)/ rollback(回滚) transaction
b.自动提交事务
c.隐式事务
基本结构:
--1、开启事务
--2、定义变量,用于保存错误编号
--3、对每一条sql语句进行错误捕捉
--4、对错误编号进行处理
-- 4.1成功,提交事务
-- 4.2失败,回滚事务
(注:可以使用@error全局变量记录执行过程中出现的错误)
例:将100元从张三银行账户转账到李四账户
--开启事务
begin transaction bank (可简写为begin tran bank )
--定义一个用于记录错误的变量
declare @error int
set @error=0--对变量进行赋值
update bank set C_Money=C_Money-100 where C_Name='张三'
set @error=@error+@@ERROR
update bank set C_Money=C_Money+100 where C_Name='李四'
set @error=@error+@@ERROR
if @error=0
begin
--执行出错,回滚事务
commit tran
print '转账成功!'
end
else
begin
--没有发现错误,提交事务
rollback tran
print '转账失败!'
end
select *from bank--查询转账后的结果
二:游标
定义:游标是一种数据对象,使用它可以按行而不是按集合操纵数据
作用:
a.有些应用程序 ,不需要对查询得到的整行记录进行访问,而只需要其中的一行或者少量的几行数据,或者希望对其进行处理时,就需要考虑游标
b.游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制
可实现目标:
a.允许定位到结果集中的特定行
b.从结果集的当前位置检索一行或多行数据
c.支持对结果集中当前位置的行进行修改
分类:T-SQL游标,APL游标,客户端游标
基本结构:
1. 声明游标:declare 游标名 cursor[local(全局的)|global(局部的)] scroll(双向滚动){forward only 是仅向后滚动,一般使用scroll(双向滚动}
for 查询语句(select..........)
[for 后可 增 删 改 ]
2.打开游标:open 游标名
3.检索游标:fetch 提取选项(frist,next等) from 游标名
4.关闭游标:close 游标名
5. 释放游标:deallocate 游标名
例:查询账户余额
--1.声明游标
declare youbiao cursor scroll for select C_Name,C_Money from bank
--2.打开游标
open youbiao
declare @name varchar(10),@money money
--检索游标
fetch first from youbiao into @name,@money
--循环读取游标中的记录
while(@@FETCH_STATUS=0)
begin
print @name+'的余额是:'+convert(varchar(10),@money)
fetch next from youbiao into @name,@money
end
--3.关闭游标
close youbiao
--4.释放游标
deallocate youbiao