学习SQL 事务

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

说明:

事务实在数据库上按照一定的扩机顺序执行的任务序列,即可以由用户手动执行,也可以有某种数据库程序自动执行。
事务实际上就是对数据库的一个或者多个更改。当你在某张表上创建或者删除记录时,你就已经使用事务了 ,控制事务以保证数据完整性,并对数据库错误做出处理,对数据库来说非常重要

实践中,通常会将很多SQL查询组合在一起,并将其作为某个事务一部分来执行


事务的属性


事务具有以下四个标准属性,通常用缩略词ACID来表示:

- 原子性: 保证任务中的所有操作都执行完毕;否则,事务会出现错误时终止,并回滚之前所有操作到原始状态.
- 一致性: 保证不同的事务相互独立,透明的进行
- 隔离性: 保证不同的事务相互独立,透明的执行
- 持久性:即使出现故障,之前成功执行的事务的结果也会持久存在

事务控制


有四个命令用于控制事务:
- COMMIT : 提交更改;
- ROLLBACK : 回滚更改;
- SAVEPOINT : 在事务内部创建一系列ROLLBACK的还原点;
- SET TRANSACTION : 命令事务;

1.COMMIT 命令

COMMIT 命令用于保存事务对数据库所做的更改。

COMMIT 命令会将自上次 COMMIT 命令或者 ROLLBACK 命令执行以来所有的事务都保存到数据库中。

COMMIT 命令的语法如下所示:
   commit;
在这里插入图片描述

DELETE FROM CUSTOMERS
     WHERE AGE = 25;
COMMIT;

在这里插入图片描述


2.ROLLBACK 命令

在这里插入图片描述
在这里插入图片描述

DELETE FROM CUSTOMERS
     WHERE AGE = 25;
ROLLBACK;

在这里插入图片描述


3.SAVEPOINT 命令

SAVEPOINT 是事务中的一个状态点,使得我们可以将事务回滚至特定的点,而不是将整个事务都撤销。

SAVEPOINT 命令的记录如下所示:

SAVEPOINT SAVEPOINT_NAME;

该命令只能在事务语句之间创建保存点(SAVEPOINT)。ROLLBACK 命令可以用于撤销一系列的事务。

回滚至某一保存点的语法如下所示:

ROLLBACK TO SAVEPOINT_NAME;

下面的示例中,你计划从 CUSTOMERS 表中删除三条不同的记录,并在每次删除之前创建一个保存点(SAVEPOINT),从而使得你可以在任何任何时候回滚到任意的保存点,以恢复数据至其原始状态。
在这里插入图片描述

SQL> SAVEPOINT SP1;
Savepoint created.
SQL> DELETE FROM CUSTOMERS WHERE ID=1;
1 row deleted.
SQL> SAVEPOINT SP2;
Savepoint created.
SQL> DELETE FROM CUSTOMERS WHERE ID=2;
1 row deleted.
SQL> SAVEPOINT SP3;
Savepoint created.
SQL> DELETE FROM CUSTOMERS WHERE ID=3;
1 row deleted.

现在,三次删除操作已经生效了,如果此时你改变主意决定回滚至名字为 SP2 的保存点,由于 SP2 于第一次删除操作之后创建,所以后两次删除操作将会被撤销。

SQL> ROLLBACK TO SP2;
Rollback complete.

注意,由于你将数据库回滚至 SP2,所以只有第一次删除真正起效了:

在这里插入图片描述

RELEASE SAVEPOINT 命令

RELEASE SAVEPOINT 命令用于删除先前创建的保存点。

RELEASE SAVEPOINT 的语法如下所示:

RELEASE SAVEPOINT SAVEPOINT_NAME;

保存点一旦被释放,你就不能够再用 ROLLBACK 命令来撤销该保存点之后的事务了。


4.SET TRANSACTION 命令

SET TRANSACTION 命令可以用来初始化数据库事务,指定随后的事务的各种特征。

例如,你可以将某个事务指定为只读或者读写
 
 SET TRANSACTION 命令的语法如下所示:

SET TRANSACTION [ READ WRITE | READ ONLY ];
SQL——事务 事务是用于保证数据的一致性,它由一组相关的DML(增、删、改)语句,该组的DML语句要么全部成功,要么全部失败。使用事务可以确保数据库的一致性和完整性,避免数据出现异常或不一致的情况。 阅读详情

相关推荐

SQL中的事务

事务 一、什么是事务 1.1 事务的概念及要求 事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作 多个操作作为一个整体向系统提交,要么全部执行,要么都不执行 事务是一个不可分割的工作逻辑单元 1.2 事务的特性(ACID) 原子性(Atomicity):事务是一个完整的操作,事务的各个步骤的操作都是不可分的,要么都执行,要么都不执行 一致性(Consistency):当事...

-_^汪洸*的博客 592

SQL 存储过程入门(事务)(四)

本篇我们来讲一下事务处理技术。 为什么要使用事务呢,事务有什么用呢,举个例子。 假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我们插入的顺序是先插入A,再插入B表,如果都顺利插入成功了,当然没有问题,如果任意一张表插入失败了,而另一张表插入成功了,插入成功的表就是垃圾数据了。我们要判断,任意一张表插入失败都回滚,就是都不插入,这就是事务的基本使用。 ...

weixin_30249203的博客 751

SQL中什么是事务

什么是SQL事务

YGCCSDN的博客 5039

SQL】一篇文章搞懂SQL事务

SQL事务是数据库管理系统中的一个重要概念,它用于确保一组操作要么全部成功执行,要么全部失败。本文从事务的特性、使用场景、使用方法、隔离级别、实现原理几个方面介绍了事务

Liu_y_xin的博客 1584

SQL必知必会》学习笔记九——事务处理

事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable);事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样;在事务开始之前和事务结束以后,数据库的完整性没有被破坏。:原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

2301_76789382的博客 587

SQL事务学习

事务(数据库引擎)         事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,称为原子性、一致性、隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务。原子性事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。一致性        事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以

swort_177的专栏 1416

sql学习事务和视图

摘要 本文主要介绍了数据库事务和视图的相关概念。事务是具有ACID特性(原子性、一致性、隔离性、持久性)的一组SQL语句执行单元,可通过显式或隐式方式创建。文章详细说明了事务隔离级别(READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE)及其解决的并发问题(脏读、不可重复读、幻读)。视图部分阐述了其作为虚拟表的特性,可以简化复杂查询、保护数据安全,并介绍了视图的创建、修改、删除、查看和更新操作。通过转账等案例说明了事务的实际应用,同时指出某

2301_80389913的博客 1045

sql学习-事务

1、简介。

sdx233666的博客 205

[SQL] 带你搞清SQL中的事务学习总结)

事务(Transaction) 1.这个单词的指向含义的广泛的,并不一定就特指我们数据库中的事务处理 2.狭义:在业务方(开发者)看来,就是一个不可再分的业务动作,这个动作最终表达为一条或者多条SQL语句。 3.事务的四个特性:ACID Atomic(原子性): 业务动作对应的 SQL 应该是看作一个整体,不可再分的。针对数据的修改只能 All or None。 Consistency(一致性): 业务方来定义的,针对数据整体做的不可变的承诺。 lsolation(隔离性): 当有多个.

weixin_61567666的博客 2476

SQL学习十七、事务处理

使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果为成功则提交事务,否则回滚事务。这 样,如果需要回退,可以回退到某个占位符。使用事务处理(transaction processing),通过确保成批的 SQL 操作要么 完全执行,要么完全不执行,来维护数据库的完整性。如果出现在2、3之间,就会有供应商没有供应商品(在某些业务中是合理的,某些业务中是不合理的)。

麻薯帅比的博客 1585

SQL Server 简单事务学习

select * from bank insert into bank values(10000) insert into bank values(20000) --打开一个事务 begin tran --定义临时变量 declare @num int = 0; update bank set balance=balance-15000 where Id=1 set @nu...

weixin_30855761的博客 108

SQL学习 - 事务的理解以及使用

事务简析 事務(Transaction)是使用者定義的一個資料庫操作序列,這些操作要麼全做要麼全不做,是一個不可分割的工作單位。如果某一事務成功,則在該事務中進行的所有資料更改均會提交,成為資料庫中的永久組成部分。如果事務遇到錯誤且必須取消或回滾,則所有資料更改均被清除,主要用來保持資料的完整性、一致性。 虽然数据库的大部分操作都是生成日志的,管理员身份可以通过日志将数据回滚,但是这种操作太过于麻...

騎牛上太空的博客 258

sql学习.事务

1.关于并发的问题,就是说如果我正在浏览,而另一用户正在修改。就会出错。  set transaction read only  select * from customers where name=tree;  commit;2.P227事务及回滚。同生共死。。显示事务被用begin transaction 与 end transaction 标识起来,其中的 update 与 delete

天祺围棋 691

Mysql学习之路事务、存储结构、sql优化

吃下Mysql 数据库的全貌

drop616的博客 2220

Java学习笔记--MySqlSQL基础,索引,事务

MVCC允许多个事务同时读取同一行数据,而不会彼此阻塞,每个事务看到的数据版本是该事务开始时的数据版本。这意味着,如果其他事务在此期间修改了数据,正在运行的事务仍然看到的是它开始时的数据状态,从而实现了非阻塞读操作。对于「读提交」和「可重复读」隔离级别的事务来说,它们是通过 Read View 来实现的,它们的区别在于创建 Read View 的时机不同,大家可以把 Read View 理解成一个数据快照,就像相机拍照那样,定格某一时刻的风景。

m0_73803861的博客 965

[SQL必知必会学习] 11 事务隔离

事务隔离的级别 SQL-92 标准中已经对 3 种异常情况进行了定义, 这些异常情况级别分别为脏读(Dirty Read) 、 不可重复读(Nnrepeatable Read) 和幻读(Phantom Read) 。 SQL-92 标准定义了 4 种隔离级别来解决事务隔离出现的异常情况。这四种隔离级别从低到高分别是:读未提交(READ UNCOMMITTED ) 、 读已提交(READ ...

墨1024 302

SQL学习指南——事务

SQL学习指南——事务

qq_43494013的博客 357

SQL Server学习记录之事务处理

ACID,是指在可靠数据库管理系统(DBMS)中,事务(transaction)所应该具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability).这是可靠数据库所应具备的几个特性.下面针对这几个特性进行逐个讲解. 原子性意味着数据库中的事务执行是作为原子。即不可再分,整个语句要么执行,要么不执行。     在SQL

xiaowenliuwen的博客 482
上一篇: SQL HAVING 子句
下一篇: 学习 SQL 使用序列(自动递增)
xiaolute
博客等级 码龄8年 25粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值