019.事务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 @[email protected]@ERROR
UPDATE BANL SET balance+=1000 WHERE carid=‘c002‘
SET @[email protected]@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.事务的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 基础 事务 -- 事务简介事务操作事务四大特性(原子性一致性隔离性持久性)并发事务问题(不可重复读脏读幻读)事务隔离级别(解决并发事务问题)

数据库事务系列1 事务概述 事务分类

初识事务,事务隔离级别,事务传播行为

事务事务特性事务隔离级别spring事务传播特性

SQL中事务有几种?

Spring 事务控制-存储过程事务