TRANSACTION在mysql是什么意思,是怎么使用的

TRANSACTION在mysql是什么意思,是怎么使用的,第1张

是mysql的事务逻辑,事务的意思是整个部分是一个整体,不可分割,简单说来指的就是,如果能执行那么就全部执行,如果不能执行,那么就全部不执行。

用法如下:

start transaction

--需要执行的sql,可能有很多句,在中间的任何一步都可以rollback,比如某一步执行异常,就可以直接回滚

--最后

commit

更详细的用法的等,建议题主查看mysql官网文档。

什么是事务?

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

注意: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 |

+---------+--------+

start transaction 开始事务

insert into test

values('4456','mr right',46.97)

commit 提交 *** 作,没执行到这步,事务就是运行失败,insert无效。

commit、rollback只能用于DML *** 作,即insert、update、delete


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8610362.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存