更新时间:2022-01-04 08:20:55
我给大家讲讲MySQL学习的事务控制。相信朋友们也应该很关心这个话题。现在给朋友们说说MySQL学习的事务控制。边肖还收集了关于MySQL学习的事务控制的相关信息。我希望你看到后会喜欢。
什么是交易控制?
事务是指作为一个逻辑工作单元执行的一系列操作,所有这些操作要么成功,要么失败。事务确保多个数据的修改作为一个单元来处理。
在Mysql中,只有使用Innodb存储引擎的数据库或表才能支持事务来维护数据库的完整性,确保一批sql语句被执行或不执行来管理INSERT、UPDATE和DELETE语句。如果张三在ATM上给李四转账,100元主要在银行业务系统中进行两步数据变更操作:
从张三的账户中减去100元给李四的账户并增加。100元问如果操作1成功,操作2失败会怎么样?
相关免费学习推荐:mysql视频教程
交易的四个特征
如果数据库支持事务,那么数据库必须具有ACID的四个特征,即原子性、一致性、隔离性和持久性。
原子的:事务必须是原子的工作单元。事务中包含的所有操作要么已完成,要么不一致。交易完成后,所有数据必须保持一致。隔离:事务独立运行。多个事务相互隔离,互不干扰。事务100%隔离会牺牲速度持久性:事务完成后,其对系统的影响是永久的MySQL事务控制。
默认情况下,MySQL会自动提交事务,即INSERT、UPDATE和DELETE的每一条SQL语句都会立即提交。因此,要启动事务,可以使用start transaction或begin,或将自动提交的值设置为0。
方法1:
方法2:
例子
登录数据库,使用学生数据库并查看所有数据表,使用学生;显示表格;
2.创建bank_account数据表,插入两条记录,将张三的余额字段值设置为1000。
创建表格银行账户(
自动递增主键,
名称VARCHAR(30) COMMENT' name ',
Balance DECIMAL(18,2)COmment ' account balance ');插入bank _ account (ID,姓名,余额)值(1,'张三',0);插入到bank _ account (ID,姓名,余额)值(2,'李四',0);UPDATE bank_account SET余额=余额1000 WHERE id=1;
3.检查默认的自动提交值。
SELECT @ @自动提交;
4.检查bank_account数据表中的所有记录。
选择*从银行账户;
5.启动事务控制并执行两条SQL语句
开始交易;UPDATE bank _ account SET balance=balance-100 WHERE id=1;UPDATE bank_account SET余额=余额100 WHERE id=2;COMMIT
6.此时检查数据表的内容。
选择*从银行账户;
7.再次启动事务控制。插入两条相同的SQL语句,但将提交更改为回滚。
开始交易;UPDATE bank _ account SET balance=balance-100 WHERE id=1;UPDATE bank_account SET余额=余额100 WHERE id=2;回滚;
8.再次检查数据表的内容,发现回滚后数据没有变化。
选择*从银行账户;
注:本文是博主MySQL研究的总结。不支持商业转载。请注明出处!如果你对MySQL学习感兴趣和了解,欢迎随时和博主交流~
更多免费学习推荐:mysql教程(视频)
以上就是MySQL学习中事务控制的详细内容!
来源:php中文网站