SQL事务

来源:互联网 发布:公司数据管理制度 编辑:程序博客网 时间:2024/06/04 20:03
SQL事务 一、事务概念    事务是一种机制、是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行。因此事务是一个不可分割的工作逻辑单元。在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的。这特别适用于多用户同时操作的数据通信系统。例如:订票、银行、保险公司以及证券交易系统等。 二、事务属性事务4大属性:1   原子性(Atomicity):事务是一个完整的操作。2   一致性(Consistency):当事务完成时,数据必须处于一致状态。3   隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的。4   持久性(Durability):事务完成后,它对于系统的影响是永久性的。 三、创建事务T-SQL中管理事务的语句:1 开始事务: begin transaction2 提交事务:commit transaction3 回滚事务: rollback transaction 事务分类:1 显式事务:用begin transaction明确指定事务的开始。2 隐性事务:打开隐性事务:set implicit_transactions on,当以隐性事务模式操作时,SQL Servler将在提交或回滚事务后自动启动新事务。无法描述事务的开始,只需要提交或回滚事务。3 自动提交事务:SQL Server的默认模式,它将每条单独的T-SQL语句视为一个事务。如果成功执行,则自动提交,否则回滚。 --书上例子--创建Bank数据库use mastergoif exists (select * from sysdatabases where name='Bank')drop database Bankcreate database Bankon primary (name='Bank_data',filename='D:\Project_S2\Bank_data.mdf',size=5mb,filegrowth=15%)log on (name='Bank_log',filename='D:\Project_S2\Bank_log.ldf',size=1mb,filegrowth=15%)go--创建cunkuan表use Bankif  exists(select * from sysobjects  where name='cunkuan')drop table cunkuan create table cunkuan(Cid int identity(1,1) primary key,CName nvarchar(32) not null,Blance int )--检查约束alter table cunkuanadd constraint CK_cunkuan_Blance check (Blance>=1)--添加数据insert into cunkuan(CName,Blance) values ('张三',1000)insert into cunkuan(CName,Blance) values ('李四',1)--用SQL执行事务Begin Transaction Declare @numError int set @numError=0update cunkuan set Blance-=1000 where CName='张三'set @numError=@numError+@@ERRORupdate cunkuan set Blance+=1000where CName='李四'set @numError=@numError+@@ERRORif @numError>0Begin   Print '交易失败,回滚事务'  RollBack TransactionendelseBegin  print '交易成功,提交成功'  commit Transactionend --查询select * from cunkuan

0 0
原创粉丝点击