MySql的事务使用与示例详解
什么是事务?
- 事务是指由一系列数据库操作所组成的一个不可分割的工作单元。
- 事务是数据库操作的基本单位,是有关联的多个操作组成的一个整体。
- 事务中的操作要么全部成功,要么全部失败,不存在部分执行的情况。
- 事务必须有四个特征,通常用ACID缩写来描述,即原子性、一致性、隔离性和持久性。
事务操作示例
示例1:向两个表中插入数据
START TRANSACTION;
INSERT INTO `users` (`name`, `age`, `gender`) VALUES ('Tom', 25, 'male');
INSERT INTO `orders` (`user_id`, `product_name`, `price`) VALUES (LAST_INSERT_ID(), 'iphone 12', 999);
COMMIT;
- 这里
users
表中的id
字段设置为AUTO_INCREMENT
,也就是说插入一条数据后id
字段会自动加 1,所以我们使用LAST_INSERT_ID()
函数获取上一个插入的id
。
示例2:转账操作
START TRANSACTION;
UPDATE `account` SET `balance` = `balance` - 100 WHERE `account_id` = '1001';
UPDATE `account` SET `balance` = `balance` + 100 WHERE `account_id` = '1002';
COMMIT;
- 这里假设有两个账户:账户1001和账户1002,我们要把账户1001中的100元转移到账户1002中。
实现事务的方式
MySQL 实现事务的方式有两种:隐式事务和显式事务。
隐式事务
隐式事务也称为自动提交事务,当我们执行完一个 SQL 语句后,MySQL 会自动把这个事务提交,不需要手动调用 COMMIT 语句。
显式事务
显式事务需要手动调用 BEGIN/START TRANSACTION 开始一个事务,然后在事务结束之前执行所有的 SQL 语句,最后调用 COMMIT/ROLLBACK 结束事务。
总结
事务是保证数据库操作的一致性的重要手段,MySQL 支持事务的同时也提供了事务基本特征的保证。在实际应用中,我们要根据具体情况选择隐式事务或显式事务,并且要严格遵守事务的基本特征。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySql的事务使用与示例详解 - Python技术站