1. 爱玩数码首页
  2. 投稿

sql server 2000中事务的类型有哪些(sql server事务处理流程)

一、事务

定义:

例如:

在银行活动中,“由账户A转移资金额X到账户B”是一个典型的银行数据库业

务。这个业务可以分解为两个动作:

1)从账户A中减掉金额X

2)在账户B中加入金额X

这两个动作应当构成一个不可分割的整体,要么完成其中的所有动作,要么不执

行其中任何动作,二者必居其一。这两个动作就是一种“不可分割”的业务单

位 。一旦某个环节失败,就需要回滚(恢复到初始状态)

事务的ACID特性:

1) 原子性(Atomicity)

2)一致性(Consistency)

3) 隔离性(Isolation)

4)持续性(Durability )

在SQL Server中数据库分三种:

自动提交事务:这是 SQL Server 的默认模式,它将每条单独的 T-SQL 语句视为

一个事务,如果成功执行,则自动提交;如果错误,则自动回滚。

如:

一旦执行失败,自动回滚

显示事务:用BEGIN TRANSACTION明确指定事务的开始,这是最常用的事务类

型。

隐性事务:通过设置SET IMPLICIT_TRANSACTIONS ON 语句,将隐性事务模式设

置为打开,下一个语句自动启动一个新事务(不需要BEGIN TRANSACTION),每

个事务仍以COMMIT或ROLLBACK语句显式完成。再下一个 Transact-SQL 语句又将

启动一个新事务。

通过SET IMPLICIT_TRANSACTIONS OFF把隐性事务模式关闭。 (隐形事务会占

用大量资源,一般都不推荐使用)

T-SQL使用下列语句来管理事务:

开始事务:BEGIN TRANSACTION

提交事务:COMMIT TRANSACTION

回滚(撤销)事务:ROLLBACK TRANSACTION

存储点语句:SAVE TRANSACTION

所谓事务存储点就是在事务过程当中插入若干个标记,当事务执行中出现错误时,可

以不撤销整个事务,只是撤销部分事务,将事务退回到某个事物存储点。一旦事务提

交或回滚,则事务结束。

例如:

/*

创建一个事务,把学号为00015的选修课程号003改为001、选修课程号004改为

006,以上两个操作任意一个操作失败,事务回滚,查看事务执行结果。

*/

begin transaction t1_student update sc set CNo=’001′ where SNo=’00015′ and CNo=’003′ update sc set CNo=’006′ where SNo=’00015′ and CNo=’004′ if @@ERROR!=0 rollback transaction else commit transaction t_student

/*创建一个事务,把学号为00015的的选修课程号003改为001、选修课程号004改为

006,第一个操作失败,事务回滚,成功则设定为保存点,第二个操作失败,则事务

回滚,查看事务执行结果。*/

begin transaction t_student update sc set CNo=’001′ where SNo=’00015′ and CNo=’003′ if @@ERROR!=0 rollback transaction save transaction t_student update sc set CNo=’006′ where SNo=’00015′ and CNo=’004′ if @@ERROR!=0 rollback transaction t_student else commit transaction t_student

/*

启动隐式事务,更新成绩后跟新课程号,然后关闭隐式事务

*/

set implicit_transactions on use SM UPDATE SC SET Score=score+1 WHERE SNO=’00001′ AND CNO=’001′ UPDATE SC SET CNO=’008′ WHERE SNO=’00001′ AND CNO=’001′ commit transaction set implicit_transactions off

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至87172970@qq.com举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论