【发布时间】:2022-01-11 17:26:43
【问题描述】:
我不能让所有东西都在同一个事务中运行。
我有以下代码:
export class TestService {
repository: any;
constructor(
@Inject(TENANT_CONNECTION) private connection)
{
this.repository = connection.getRepository(Test)
}`
@Transactional()
async agregar(tableNew: Test): Promise<Number> {
const tableSave = this.repository.create(tableNew)
await this.repository.save(tableSave)
if(tableSave.default){
await this.repository.update(
{default:true,id:Not(tableSave.id)},
{default:false}
)
}
return tableSave.id
}
在数据库中执行如下:
query: START TRANSACTION
query: SELECT `Test`.`id` AS `Test_id`,`Test`.`default` AS `Test_default` FROM `test` `Test` WHERE `Test`.`id` IN (?) -- PARAMETERS: [0]
query: START TRANSACTION
query: INSERT INTO `test`(`id`,`default`) VALUES (?,?) -- PARAMETERS: [0,1]
query: COMMIT
query: UPDATE `test` SET `default` = ? WHERE (`default` = ? AND `id` != ?) -- PARAMETERS: [0,true,41]
query: COMMIT
如您所见,执行了 2 个事务,我需要它只有一个
【问题讨论】: