首页 > 代码库 > 019.事务
019.事务
事务是啥?
TRANSACTION
是单个逻辑单元,可以执行一系列操作.
这些操作作为一个整体一起向系统提交,要么都执行,要么都不执行.
事务是一个不可分割的逻辑单元.
CREATE TABLE BANL
(
CARID varchar(10),
NAME VARCHAR(20),
BALANCE MONEY CHECK(BALANCE>1)
)
INSERT INTO BANL VALUES
(‘C001‘,‘张三‘,1000),
(‘C002‘,‘李四‘,2000)
--使用事务模拟转账
--开始事务
BEGIN TRANSACTION--执行操作(2个update)
DECLARE @ERR INT=0
UPDATE BANL SET balance-=1000 WHERE carid=‘c001‘
SET @ERR+=@@ERROR
UPDATE BANL SET balance+=1000 WHERE carid=‘c002‘
SET @ERR+=@@ERROR
--事务的结束
IF(@ERR=0)
--1.提交
BEGIN
COMMIT TRANSACTION--永久的将数据文件记录到硬盘中
PRINT ‘转帐成功‘
END
ELSE
BEGIN
--2.回滚(撤销)
ROLLBACK TRANSACTION
PRINT ‘转账失败‘
END
SELECT * FROM BANL
二.事务语法:
开始事务
BEGIN TRANSACTION
结束事务
COMMIT 提交
ROLLBACK 回滚
三.事务的分类:
1.显示事务(使用最多的)
特点:事务开始,结束都是用户手动控制
SELECT * FROM EMP
BEGIN TRANSACTION
DELETE FROM EMP
ROLLBACK
--什么是数据的并发访问?
多个用户同时访问相同的数据
--数据库的措施,如何解决的数据并发访问?
--锁:事务操作中的数据会被加锁(修改锁(增删改))
--排他锁(防止其他用户对当前事务锁定的数据)
--进行[增删改]操作
--其他用户要排队等待waiting
--释放锁:事务结束,锁就会被释放
--事务的隔离级别:
-- 默认级别:拒绝脏读级别(帮助)
-- 脏读:读取正在被别人操作(锁定)的数据
2.自动提交模式
特点:认为每一条sql都是一个独立的事务,如果执行成功,系统自动提交,出错系统自动回滚并提示错误
DELETE FROM EMP WHERE EMPNO=7369
3.隐性事务模式(了解)
特点:事务的开始时自动的(sql)
结束是手动的(commit,rollback)
set implicit transaction on|off
事务的四个特性:
原子性
一致性
隔离性
019.事务