PostgreSQL 트랜젝션 질문드립니다. 0 4 2,010

by 란주 [SQL Query] [2020.12.29 16:25:32]


질문1

BEGIN TRANSACTION

트랜젝션 시작하고

rollback도

commit도 

안하면 어떻게 되나요?

트랜젝션이 계속 유지 되는 건가요?

 

 

질문2

END TRANSACTION 같은건 없나요?

rollback, commit 하면 트렌젝션은 종료 되나요?

 

 

질문3

동일한 테이블에 insert 여러건도

트랜젝션 단위에 포함되나요?

 

 

질문4

트랜젝션을 db에 접속한 사용자 단위로 되나요?

by 란주 [2020.12.29 16:34:47]

하나의 트랜잭션은 commit과 rollback을 만나면 끝난다.
COMMIT 또는 ROLLBACK 명령으로 직접 트랜잭션을 완성하거나 취소할 수도 있지만,
다음과 같은 경우에는 자동으로 트랜잭션이 종료됩니다.

DDL(CREATE, ALTER, DROP) 명령어를 실행할 때
DCL(GRANT, REVOKE) 명령어를 실행할 때
Deadlock같은 특정 Error를 만날 때
SQL*Plus를 종료할 때


by 란주 [2020.12.29 16:40:49]

LOCK
특정 세션에서 조작 중인 데이터는 트랜잭션이 완료되기 전까지 다른 세션에서 조작할 수 없는 상태가 된다. (데이터가 잠김)
조작 중인 데이터를 다른 세션은 조작할 수 없도록 접근을 보류시키는 것
다른 세션에서 INSERT 등의 명령을 실행할 수가 없습니다.

 

 


by 마농 [2020.12.29 18:03:31]

질문1. 네.
질문2. 네.
질문3. 네. 하나의 트랜젝션 안에 여러개 DML 포함
질문4. 네.
댓글1. 오라클에 대한 설명이네요.
- 대부분 비슷하지만 약간 차이가 있을 수 있습니다.
- 오라클의 경우 DDL 하면 커밋이 되며 트랜젝션이 종료되지만
- MSSQL 의 경우 BEGIN TRAN 상태에서 DDL 도 롤백이 가능합니다.
- PostgreSQL 은 어떨지 모르겠네요.


by 란주 [2020.12.30 21:52:01]

답변 영광입니다 마농님

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입