SQL Server 表的管理_关于事务操作的详解(案例代码)

1、概念

事务(transaction):

  是将多个修改语句组合在一起的方法,这个方法中的所有语句只有全部执行才能正确完成功能。即要么全部执行,要么全部不执行。

2、事务的acid属性:


  • 原子性:事务处理语句是一个整体,不可分割。Atomicity--A



  • 一致性:事务处理前后数据库前后状态要一致。Consistency--C



  • 分割性(隔离性):多个事务并发处理互不干扰。Isolation--I


  • 持久性:事务处理完成后,数据库的变化将不会再改变。Durability--D

注意:在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。因此要显式地开启一个事务务须使用命令 BEGIN 或 START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。

3、MySQL事务隔离级别

事务隔离级别

脏读

不可重复读

幻读

读未提交(read-uncommitted)




不可重复读(read-committed)




可重复读(repeatable-read)




串行化(serializable)




 

 4、SQL的事务模式

事务分类:

  1. 显式事务:用begin transaction明确指定事务的开始。
  2. 隐性事务:打开隐性事务:set implicit_transactions on,当以隐性事务模式操作时,SQL Servler将在提交或回滚事务后自动启动新事务。无法描述事务的开始,只需要提交或回滚事务。
  3. 自动提交事务:SQL Server的默认模式,它将每条单独的T-SQL语句视为一个事务。如果成功执行,则自动提交,否则回滚。

 4.1显示事务

 T-SQL中管理事务的语句:
  1 开始事务: begin transaction
  2 提交事务:commit transaction
  3 回滚事务: rollback transaction

 案例代码:



begin transaction
insert into dept  values(100,'陈浩','男',19)
save transaction sp1;
insert into dept  values(101,'erer','男',9)
rollback transaction sp1;
commit transaction;
--执行过程中插入第二条语句后,事务回滚到第二条数据之前,也就是第二条动作被撤销后,
--最后提交事务后,表中只有一条数据。



4.2隐式事务

开启关闭隐式事务的方法:



SET IMPLICIT_TRANSACTIONS ON/OFF;



set implicit_transactions on;
insert into dept values(101,'erer','男',9)
rollbac