설문조사
PostgreSQL/PPAS 관련 듣고 싶은 교육은


총 게시물 94건, 최근 0 건
   

트랙잭션 시작하기

글쓴이 : PostgresDBA 날짜 : 2012-12-19 (수) 14:08 조회 : 8168
오라클에서는 세션 접속시 디폴트로 트랜잭션을 시작하지만, 
PostgreSQL 에서는
BEGIN WORK( 또는 BEGIN) 명령으로, 명시적으로 지정해주어야 트랜잭션을 시작할수 있습니다.

즉, 쉽게 말하자면  BEGIN(BEGIN WORK)  이후에나 COMMIT(COMMIT WORK)  / ROLLBACK(ROLLBACK WORK) 이 가능합니다.

BEGIN 을 명시하지 않으면, 모든 DDL/DML 은 디폴트로 자동 COMMIT 입니다.(PostgreSQL 디폴트 설정)
재밌는 사항은 PostgreSQL 에서는  DDL 문까지 롤백가능합니다.
(오라클에서는 DDL 수행시 내부적으로 자동 COMMIT 을 수행합니다.)

scott@pg-00:5432:scottdb] 
SQL> begin;
BEGIN
Time: 1.131 ms
scott@pg-00:5432*:scottdb] 
SQL> create table test(x int);
CREATE TABLE
Time: 10.489 ms
scott@pg-00:5432*:scottdb] 
SQL> insert into test values(100);
INSERT 0 1
Time: 2.102 ms
scott@pg-00:5432*:scottdb] 
SQL> select * from test;
  x  
-----
 100
(1 row)

Time: 1.894 ms
scott@pg-00:5432*:scottdb] 
SQL> rollback;
ROLLBACK
Time: 3.145 ms
scott@pg-00:5432:scottdb] 
SQL> select * from test;
ERROR:  relation "test" does not exist
LINE 1: select * from test;
                      ^
Time: 2.161 ms
scott@pg-00:5432:scottdb] 
SQL> 

   

postgresdba.com