[postgresql]トランザクションを作成してコミットしないと?
1226 ワード
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を起動した後、コミットトランザクションが実行されていない場合、常に実行中であり、他のクエリーは実行されません.すなわち、nodejsサーバはアクティブであるが、クエリーは実行されないため、サーバは停止状態にある.取引を完了する唯一の方法は提出することです.rockの条件はトランザクションの孤立度に依存します.
リファレンス
https://stackoverflow.com/questions/4896479/what-happens-if-you-dont-commit-a-transaction-to-a-database-say-sql-server
Reference
この問題について([postgresql]トランザクションを作成してコミットしないと?), 我々は、より多くの情報をここで見つけました https://velog.io/@jeong3320/postgresql-트랜잭션-생성후-커밋안한다면テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol