DBMS: PostgreSQL 14.9 |
- BEGIN 명령을 통한 트랜잭션 진행 중 ERROR 발생 시 이후 모든 명령은 에러 발생함
ERROR: current transaction is aborted, commands ignored until end of transaction block
- commit 또는 rollback 후 정상 작동
[목차여기]
테스트 테이블 생성
postgres=# create table t1 as select * from pg_tables ;
SELECT 66
postgres=#
postgres=# select count(*) from t1 ;
count
-------
66
(1 row)
테스트
postgresql은 기본 autocommit 으로 작동합니다.
수동으로 begin 명령을 사용하여 트랜잭을 시작하면 commit 또는 rollback 수행 전까지 하나의 트랜잭션으로 수행됩니다
테스트에서 트랜잭션 시작 후 SQL구문을 틀려 에러를 유발합니다.
이후 동일세션의 모든 명령은
"ERROR: current transaction is aborted, commands ignored until end of transaction block"
에러 발생합니다.
commit / rollback 으로 트랜잭션 종료하면 정상 작동 합니다
-- 트랜잭션을 걸어준다
postgres=# begin ;
BEGIN
-- 에러 유발
postgres=*# delete fro t1 ;
ERROR: syntax error at or near "fro"
LINE 1: delete fro t1 ;
^
-- 에러 발생 후 해당 세션에서의 모든 명령어가 실행 불가함
postgres=!# select count(*) from t1 ;
ERROR: current transaction is aborted, commands ignored until end of transaction block
-- rollback(트랜잭션 종료) 후 명령어 정상 수행
postgres=!# rollback ;
ROLLBACK
postgres=# select count(*) from t1 ;
count
-------
66
(1 row)
'DBMS > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] dead tuple 모니터링 시 주의(vacuum full) (0) | 2024.04.21 |
---|---|
[PostgreSQL] postgres 계정 로그인 불가 single 모드 복구 (FATAL: role "postgres" is not permitted to log in) (1) | 2024.04.19 |
[PostgreSQL] pg_dump 파일에서 테이블명 변경하여 복구 (0) | 2024.03.12 |
[PostgreSQL] WAL 경로 변경하는법 (0) | 2024.03.07 |
[PostgreSQL] auto_explain 사용/미사용 성능 테스트 (0) | 2024.02.29 |
댓글