오라클에서는 세션 접속시 디폴트로 트랜잭션을 시작하지만,
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>