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的事务模式
事务分类:
- 显式事务:用begin transaction明确指定事务的开始。
- 隐性事务:打开隐性事务:set implicit_transactions on,当以隐性事务模式操作时,SQL Servler将在提交或回滚事务后自动启动新事务。无法描述事务的开始,只需要提交或回滚事务。
- 自动提交事务: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