我想使用 Nestjs 和 TypeORM 在 PostgreSQL 中实现数据库行锁定。请任何人告诉我如何以正确的方式实施它。我尝试使用以下代码,但不确定它是否锁定特定行。
async testFun(): Promise<any> {
const user = await this.userRepo
.createQueryBuilder("user")
.useTransaction(true)
.setLock("pessimistic_write")
.where("id = :id", { id: 2 })
.getOne()
const updateResult: any = await this.userRepo.createQueryBuilder('test')
.update()
.set({ fullname: "frm3000" })
.where("id = :id", { id: 2 })
.execute();
return updateResult;
}
Run Code Online (Sandbox Code Playgroud)
TypeORM 生成的查询是,
query: START TRANSACTION
query: SELECT * FROM "users" "user" WHERE id = $1 FOR UPDATE -- PARAMETERS: [2]
query: COMMIT
query: UPDATE "users" SET "fullname" = $1 WHERE "id" …
Run Code Online (Sandbox Code Playgroud)