mysql中的事务是啥如何使用

author author     2023-04-21     125

关键词:

什么是事务?

事务是逻辑上的一组操作,组成这组操作的各个单元,要不全都成功要不全都失败,这个特性就是事务

注意:mysql数据支持事务,但是要求必须是innoDB存储引擎

解决这个问题:

mysql的事务解决这个问题,因为mysql的事务特性,要求这组操作,要不全都成功,要不全都失败,这样就避免了某个操作成功某个操作失败。利于数据的安全

如何使用:

(1)在执行sql语句之前,我们要开启事务 start transaction;

(2)正常执行我们的sql语句

(3)当sql语句执行完毕,存在两种情况:

1,全都成功,我们要将sql语句对数据库造成的影响提交到数据库中,committ

2,某些sql语句失败,我们执行rollback(回滚),将对数据库操作赶紧撤销

(注意:mysql数据支持事务,但是要求必须是innoDB存储引擎)
mysql> create table bank(name varchar(20),money decimal(5,1))engine=innodb defau
lt charset=utf8;

mysql> inset into bank values('shaotuo',1000),('laohu',5000);

mysql> select*from bank;
+---------+--------+
| name | money |
+---------+--------+
| shaotuo | 1000.0 |
| laohu | 5000.0 |
+---------+--------+

------没有成功“回滚”执行rollback
mysql> start transaction; //开启事务
Query OK, 0 rows affected (0.00 sec)

mysql> update bank set money=money+500 where name='shaotuo';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> update bank set moey=money-500 where name='laohu';
ERROR 1054 (42S22): Unknown column 'moey' in 'field list'
mysql> rollback; //只要有一个不成功,执行rollback操作
Query OK, 0 rows affected (0.01 sec)

mysql> select*from bank;
+---------+--------+
| name | money |
+---------+--------+
| shaotuo | 1000.0 |
| laohu | 5000.0 |
+---------+--------+
------成功之后 进行commit操作
mysql> start transaction; //开启事务
Query OK, 0 rows affected (0.00 sec)

mysql> update bank set money=money+500 where name='shaotuo';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> update bank set money=money-500 where name='laohu';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> commit; //两个都成功后执行commit(只要不执行commit,sql语句不会对真实的数据库造成影响)
Query OK, 0 rows affected (0.05 sec)

mysql> select*from bank;
+---------+--------+
| name | money |
+---------+--------+
| shaotuo | 1500.0 |
| laohu | 4500.0 |
+---------+--------+
参考技术A 1. 普通事务
以 begin / start transaction 开始,commit / rollback 结束的事务。或者是带有保存点 savepoint 的事务。
2. 链式事务
一个事务在提交的时候自动将上下文传给下一个事务,也就是说一个事务的提交和下一个事务的开始是原子性的,下一个事务可以看到上一个事务的处理结果。MySQL 的链式事务靠参数 completion_type 控制,并且回滚和提交的语句后面加上 work 关键词。
3. 嵌套事务
有多个 begin / commit / rollback 这样的事务块的事务,并且有父子关系。子事务的提交完成后不会真的提交,而是等到父事务提交才真正的提交。
4. 自治事务
内部事务的提交不随外部事务的影响,一般用作记录内部事务的异常情况。MySQL 不支持自治事务,但是某些场景可以用 MySQL 的插件式引擎来变相实现。

我才知道mysql事务&mvcc到底是啥?(代码片段)

...持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。那实际上,我们研究事务的原理,就是研究MySQL的InnoDB引擎是如何保证事务的这四大特性的。而对于这四大特性,实际上分为两个部分。其中的... 查看详情

使用以下代码可以实现 MySQL 中的 PHP“嵌套”事务?

】使用以下代码可以实现MySQL中的PHP“嵌套”事务?【英文标题】:PHP"Nested"transactionsinMySQLcouldbearealityusingthefollowingcode?【发布时间】:2017-02-0920:34:23【问题描述】:好的,我正在使用PHP在MySQL中寻找“嵌套”事务的解决方... 查看详情

spring中的事务

...相应的封装,便于业务开发中使用事务。项目中使用Spring中的事务首先时基于Mysql数据库中InnoDB引擎的,如果数据库中就是使用MyISAM引擎那么就不支持事务了。1.Spring中的事务Spring项目中如何对代码块使用事务?编程式事务通过Tr... 查看详情

MySQL中的`unsigned`是啥意思以及何时使用它?

】MySQL中的`unsigned`是啥意思以及何时使用它?【英文标题】:Whatdoes`unsigned`inMySQLmeanandwhentouseit?MySQL中的`unsigned`是什么意思以及何时使用它?【发布时间】:2011-04-2304:20:37【问题描述】:“未签名”在MySQL中是什么意思,我应该... 查看详情

如何知道 mysql 中的下一个自动增量 ID 是啥? [复制]

】如何知道mysql中的下一个自动增量ID是啥?[复制]【英文标题】:Howtoknowwhatwouldbethenextautoincrementidinmysql?[duplicate]如何知道mysql中的下一个自动增量ID是什么?[复制]【发布时间】:2016-03-3123:10:35【问题描述】:假设我有这样一张... 查看详情

如何在wordpress中使用mysql事务?

】如何在wordpress中使用mysql事务?【英文标题】:Howtousemysqltransactioninwordpress?【发布时间】:2013-10-0920:15:36【问题描述】:我要删除10个孩子,如果一个是活动的,全部删除都会回滚。【问题讨论】:您可以在一个查询中删除它... 查看详情

mysql数据库中,事务是指啥?如何使用该功能?

...)、持久性(Durability)。原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没... 查看详情

17mysql事务

...(Atomicity):一个事务是一个不可分割的工作单位,事务中的所有操作要么全部完成,要么全部不完成。一致性(Consistency):当事务完成时,所有数据都必须处于一致的状态,即数据库从一个一致性状态转移到另一个一致性状... 查看详情

spring中的事务管理:只读事务是啥意思?

设置一个事务为只读事务,这是什么意思?是这个事务的管辖范围内不准有非读操作,还是说只读事务执行期间,数据库其他任何事务都不能进行?请不要照搬网络上的文章,我一眼就能看出是不是复制的。参考技术A就是只能... 查看详情

需要知道 MySQL 中的 Mid([GTIN],2,10) 是啥

】需要知道MySQL中的Mid([GTIN],2,10)是啥【英文标题】:NeedtoknowwhatisMid([GTIN],2,10)inMySQL需要知道MySQL中的Mid([GTIN],2,10)是什么【发布时间】:2013-09-0417:24:01【问题描述】:我得到了一个要在一些PHP代码中使用的查询,但问题是,给我查... 查看详情

如何确定 MySQL 中现有表的列分隔符是啥

...布时间】:2016-02-1217:13:45【问题描述】:我正在使用MySQL中的现有表,但我需要知道它是如何设置的。我需要找到FIELDSTERMINATEDBY设置,以便我可以相应地设置我的Impala数据库。【 查看详情

springboot事务的使用(编程式声明式)及@transactional工作原理失效处理(代码片段)

@TOC回顾事务Spring中事务的实现Spring中的事务操作分为两类:在开始讲解它们之前,咱们先来回顾事务在MySQL中是如何使⽤的?MySQL中的事务使⽤(回顾)事务在MySQL有3个重要的操作:它们对应的操作命令如下:--开启事务starttransa... 查看详情

漫谈mysql中的事务

   最近一直在做订单类的项目,使用了事务。我们的数据库选用的是MySql,存储引擎选用innoDB,innoDB对事务有着良好的支持。这篇文章我们一起来扒一扒事务相关的知识。为什么要有事务?    事务广泛... 查看详情

sqlserver中的事务是啥意思

...则在该事务中进行的所有数据修改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有数据修改均被清除。SQLServer以下列事务模式运行。自动提交事务每条单独的语句都是一个事务。显式事务... 查看详情

oracle中的保存点是啥

用户在事务(transaction)内可以声明(declare)被称为保存点(savepoint)的标记。保存点将一个大事务划分为较小的片断。用户可以使用保存点(savepoint)在事务(transaction)内的任意位置作标记。之后用户在对事务进行回滚操作... 查看详情

漫谈mysql中的事务

 最近一直在做订单类的项目,使用了事务。我们的数据库选用的是MySql,存储引擎选用innoDB,innoDB对事务有着良好的支持。这篇文章我们一起来扒一扒事务相关的知识。为什么要有事务?    事务广泛的运用于... 查看详情

Mysql 中的 Error#1221 是啥,这个 SqlQuery 的基本问题是啥?

】Mysql中的Error#1221是啥,这个SqlQuery的基本问题是啥?【英文标题】:WhatisError#1221inMysqlandisbasicprobleminthisSqlQuery?Mysql中的Error#1221是什么,这个SqlQuery的基本问题是什么?【发布时间】:2009-09-1712:51:02【问题描述】:我正在使用MYSQ... 查看详情

sqlserver事务日志被填满的原因是啥

...误描述:数据库的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅sys.databases中的log_reuse_wait_desc列。首先引入一下事务日志的概念事务日志是一个与数据库文件分开的文件。它存储对数据库进行的所有更改,并全... 查看详情