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
![](https://ichistudio.cn/wp-content/uploads/2023/12/图片-17-1024x229.png)
一致性
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
![](https://ichistudio.cn/wp-content/uploads/2023/12/图片-18-1024x221.png)