MySQL中的事务, 特性及应用
2024-01-07 20:27:04
事务
1 )概述
- 只有
innodb
引擎支持事务,myisam
是不支持的 - 事务的本质是原子性操作,不可分割,打包多个操作成为一个原子
2 )事务的四大特性(ACID)
- 原子性
Atomicity
- 原子性是指事务包含的所有操作不可分割
- 要成功一起;要失败也是一起,并且失败会回滚
- 一致性
Consistency
- 执行的前后数据的完整性保持一致
- 隔离性
Isolation
- 一个事务执行的过程中,不应受到其他事务的干扰
- 持久性
Durability
- 事务一旦结束,数据就持久到数据库中
3 ) SQL 应用示例
创建 users 表
create table `users`(
`id` int(11) not null auto_increment primary key,
`name` varchar(32) default null,
`amount` int(11) default null
) engine=innodb default charset=utf8;
进行事务处理
select * from users;
begin; -- 开启事务
-- start transaction; -- 这个和 begin 都是开启事务,二者取其一
update users set amount=amount-2 where id=1; -- 执行操作1
update users set amount=amount+2 where id=2; -- 执行操作2
commit; -- 提交事务
-- rollback; -- 回滚事务 与上面 二者取其一,不同场景使用
select * from users;
python 示例
import pymysql;
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='xxxxxxx', charset='utf8', db='userdb')
cursor = conn.cursor()
# 开启事务
conn.begin()
try:
cursor.execute('update users set amount=1 where id = 1')
# ... 其他操作
cursor.execute('update tran set amount=2 where id = 2')
except Exception as e:
# 回滚
print('回滚')
conn.rollback()
else:
# 提交
print('提交')
conn.commit()
cursor.close()
conn.close()
文章来源:https://blog.csdn.net/Tyro_java/article/details/135374160
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!