SQL Server 数据库的并发控制原理-事务的原理

1. 理解事务的概念
  • 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元
  • 由高级数据库操纵语言书写的用户程序执行所引起,并用如begin transaction和end transaction语句来界定
  • 由事务开始和事务结束之间执行的全体操作组成
2.掌握事务的特性
  • 事务的四大特性:原子性、一致性、隔离性、持久性,统称ACID特性
  • 事务是数据库运行中的一个逻辑工作单元,由数据库的事务管理子系统负责

原子性:一个事务是一个不可分割的工作单位,事务中包括的操作要么做,要么都不做

一致性:事务必须是使数据库从一个一致性状态到另一个一致性状态

隔离性:一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰

持久性:一个事务一旦提交,它对数据库中数据的改变就应该是永久性的

原子性
SQL
--创建一张案例表,约束列ID只为10
CREATE TABLE Test
  (
     ID INT,
     CONSTRAINT CheckID CHECK(ID=10)
  )

--插入两条数据,一个数据是10,另一条是11
INSERT INTO Test
            (ID)
VALUES      (10),
            (11) 

--这里一条(10)数据是符合规范的,但是另一条数据11不符合规范
--这里为了符合事务的原子性,所以没有任何数据插入
SELECT * FROM Test

--开始事务
BEGIN TRANSACTION

INSERT INTO Test
            (ID)
VALUES      (10)
--提交事务
COMMIT TRANSACTION
--回滚事务
ROLLBACK TRANSACTION
一致性
SQL
---创建一张主表
CREATE TABLE TableA
  (
     ID INT PRIMARY KEY
  )

INSERT INTO TableA
VALUES     (1)

--创建一张从表
CREATE TABLE TableChild
  (
     ID INT PRIMARY KEY,
	 Col INT,
	 --外键
	 CONSTRAINT fk_s FOREIGN KEY(Col) REFERENCES TableA(ID)
  ) 
  INSERT INTO TableChild VALUES(1,1)

--删除主表的列,由于此列在从表中有引用
--为了保证数据库的事务一致性,这里就会禁止删除操作
DELETE TableA
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部