SQL 事务

来源:互联网 发布:linux开机动画 编辑:程序博客网 时间:2024/06/16 03:30

 

     SQL事务

   一:事务概念


    事务是一种概念,一个操作序列, 它包含了一组数据操作命令,并且把所有的命令作为一个整体向系统提交或撤销操作请求,即这一组数据库要么都执行,要么都不执行.因此事物是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时,事物是作为最小的控制单元来使用的,它特别适合用于多用户同时操作的数据库系统.例如:订票,银行,保险公司以及证券交易系统.
    事务是作为单个逻辑工作单位执行的一系列操作.
   


   二:事务的属性:  
    原子性(Atomicity):事务是一个完整的操作.事务的各元素是不可分割的(原子的).事务中的所有元素必须作为一个整体提交或回滚.如果事务中的任何元素失败,则整个事务将失败.  

    一致性(Consistency):当事务完成时,数据必须处于一致状态.也就是说,在事务开始之前,数据库中存储的数据处于一致状态.在正在进行的事务中,数据可能处于不一致的状态,如数据可能有部分被修改.然而当事务成功完成时,数据必须再次回到已知的已知状态.
                
    隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的.它不应以任何方式依赖于或影响其他事物.修改数据的事务可以在另一个使用相同数据的事务之前访问这些数据,或者在另一个使用相同数据的事务结束之后访问这些数据.另外,当事务修改数据时,如果任何其他进程正在同时使用相同的数据,则直到该事务成功提交之后,对数据的修改才能生效. 

    持久性(Durability):事务的持久性指不管系统是否发生了故障,事务处理的结果都是永久性的.

 

   三:创建事务
   (1):开始事务
       begin  transaction

   (2):提交事务
       commit transaction

   (3):回滚(撤销)事务
       rollback transaction

   事务分类:
    显示事务:用begin transaction明确指定事务的开始.

    隐式事务: 通过设置set implicit_transactions on 语句,将隐式事务模式设置为打开.当以隐式事务操作时,SQL Server将在提交或回滚事务后自动开启新事物.不需要描述每个事物的开始,只要提交或回滚每个事务即可.

    自动提交事务:这是SQL Server的默认模式,它将每条单独的T-SQL语句视为一个事务.如果成功执行,则自动提交.如果失败,则自动回滚.


   
  create table Fell   --创建表
  (
  id int identity(1,1) primary key not null,
  name nvarchar(32) not null,
  money int not null
  )
 
  alter table Fell           --创建约束
  add constraint ck_money check (money>=5)
 
  insert into Fell values('小小',50000)    --添加语句
  insert into Fell values('小轩',50)
 
  begin transaction  --开始事务
 
  declare  @sumerror int
  set @sumerror=0
 
  update Fell set money=money-50000
  where id=1
 
  set @sumerror+=@@ERROR
 
  update Fell set money=money+50000
  where id=2
 
  set @sumerror+=@@ERROR
 
  if(@sumerror>0)
  begin
  --提交事务
   commit transaction
  end
  else
  begin
  --回滚(撤销)事务
  rollback transaction
  end
 
  select * from Fell

 

 

0 0
原创粉丝点击