[postgresql] 트랜잭션 생성후 커밋을 하지 않는다면?
1268 단어 PostgreSQLPostgreSQL
import {getConnection} from "typeorm";
const userFunction=()=>{
const connection = getConnection();
const queryRunner = connection.createQueryRunner();
await queryRunner.connect();
await queryRunner.query("SELECT * FROM users");
const users = await queryRunner.manager.find(User);
if (users){
return true // 커밋없이 리턴
}
await queryRunner.startTransaction();
try {
await queryRunner.manager.save(user1);
await queryRunner.manager.save(user2);
await queryRunner.manager.save(photos);
await queryRunner.commitTransaction();
return true 커밋 후 리턴
} catch (err) {
await queryRunner.rollbackTransaction();
} finally {
await queryRunner.release();
}
}
START TRANSACTION 실행 후 commitTransaction이 실행되지 않으면
계속 실행상태가 되어 락이걸려 다른 쿼리가 실행되지 않는다.즉 nodeJs서버는 살아있지만 쿼리가 실행되지 않아 서버가 멈춤상태에 있는것과 같은 상태가 된다.트랜잭션을 끝내는 유일한 방법은 commit을 하는 방법뿐이다.락의 조건은 트랜잭션 고립수준에 따라 달라진다.
Author And Source
이 문제에 관하여([postgresql] 트랜잭션 생성후 커밋을 하지 않는다면?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jeong3320/postgresql-트랜잭션-생성후-커밋안한다면저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)