事务Transaction

Mysql 事务主要用于处理操作量大,复杂度高的数据。不如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!

事务是一组相关操作

在Mysql中只有使用了Innodb数据库引擎的数据库或表才支持事务

事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行。

事务用来管理insert,update,delete语句


一般来说,事务是必须满足4个条件(ACID):Atomicity(原子性),Consistency(稳定性),lsolation(隔离性),Durability(可靠性)

1.事务的原子性,一组事务,要么成功,要么撤回。

2.稳定性:有非法数据(外键约束之类),事务撤回。

3.隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务。那么其他事务会撤回。事务的的100%隔离。需要牺牲速度。

4.可靠性:软,硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得。 inndb_flush_log_at_trx_commit选项 决定什么时候把事务保存到日志里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nestjs是一个基于Node.js的开发框架,而是nestjs中常用的一个数据库ORM工具。在nestjs中使用typeorm进行事务回滚可以通过以下步实现: 1. 首先,你需要在nestjs项目中安装typeorm和数据库驱动程序(如mysql、等)的相关依赖。 2. 在中,你可以使用装饰器`@()`来标记一个方法需要在事务中执行。这个装饰器可以应用在controller或service层方法上。 3. 在需要回滚事的方法中,你可以使用typeorm提供的`EntityManager`来管理事务。通过调用`entityManager.transaction()`方法,你可以创建一个新的事务。 4. 在事务中执行数据库操作时,如果发生错误或者需要回滚事务,你可以使用`entityManager.rollback()`方法来回滚事务。 5. 如果所有的数据库操作都成功完成,你可以使用`entityManager.commit()`方法来提交事务。 下面是一个nestjs中使用typeorm进行事务回滚的示例代码: ```typescript import { Injectable } from '@nestjs/common'; import { InjectEntityManager } from '@nestjs/typeorm'; import { EntityManager } from 'typeorm'; @Injectable() export class MyService { constructor( @InjectEntityManager() private readonly entityManager: EntityManager, ) {} @Transaction() async myMethod(): Promise<void> { try { await this.entityManager.transaction(async (entityManager) => { // 在事务中执行数据库操作 await entityManager.query('INSERT INTO table1 (column1) VALUES (value1)'); await entityManager.query('INSERT INTO table2 (column2) VALUES (value2)'); }); } catch (error) { // 发生错误时回滚事务 await this.entityManager.rollback(); throw error; } } } ``` 在上面的示例中,`myMethod()`方法被标记为`@Transaction()`,表示该方法需要在事务中执行。在事务中,我们使用`entityManager.query()`方法执行数据库操作。如果发生错误,我们会回滚事务并抛出错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值