database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 3214 게시물 읽기
No. 3214
Re: transaction 관리에대한 답변
작성자
김일형
작성일
2001-07-31 00:17
조회수
2,397

PostgreSQL에서는 BEGIN과 END로 Transaction의 시작과 끝을 표시를 합니다.

하나의 트랜젝션으로 관리를 할 쿼리부분을 begin; 과 end;로 묶으시고 쿼리중 문제가 생길경우 rollback;을 해주시면 됩니다.

 

다음은 제가 psql을 이용하여 테스트한 화면입니다. (test라는 테이블은 integer 칼럼 하나만을 가지고 있는 것입니다.)

 

=> select * from test;

id

----

(0 rows)

 

=> begin;

BEGIN

=> insert into test values (10);

INSERT 19784 1

=> insert into test values (20);

INSERT 19785 1

=> select * from test;

id

----

10

20

(2 rows)

 

=> rollback;

ROLLBACK

=> end;

NOTICE: COMMIT: no transaction in progress

COMMIT

=> select * from test;

id

----

(0 rows)

 

위에서 보시는 바와 같이 잘 되죠? 자세한 것은 레퍼런스 메뉴얼을 참조해 주십시요.

 

그리고 PL/pgSQL에서는 (메뉴얼에 보면) 함수 내에서 에러가 발생할 경우 그 트랜젝션은 자동으로 Rollback되는 것으로 나와있습니다.

이의 예제는 다음 글에 소개할 것입니다.

 

김일형.

 

 

>>이성한 님께서 쓰시길<<

 

:: 안녕 하십니까 이성한 입니다.

::

::

:: transaction 관리에 대한 질문입니다.

::

:: 다음과 같은 sql 문장을 psql에서 실행을 했습니다.

::

:: tms=>INSERT INTO tmsrout010 VALUES ( 55, 55, 55, 55) ;

:: INSERT 30176 1

::

:: tms=>INSERT INTO tmsrout010 VALUES ( 66, 66, 66, 66) ;

:: INSERT 30177 1

::

:: tms=> rollback;

:: NOTICE: ROLLBACK: no transaction in progress

:: NOTICE: ROLLBACK: no transaction in progress

:: ROLLBACK

::

:: tms=> select * from tmsrout010;

:: node_id | name | location | ip_address

:: ---------+------+----------+------------

:: 55 | 55 | 55 | 55

:: 66 | 66 | 66 | 66

:: (2 rows)

::

:: 위에 결과로 보면 transaction 관리가 되지 안는 것으로 생각 됩니다.

:: (auto commit 으로 되어 있는 것 같습니다.)

::

:: transaction 관리를 하려면 무슨 방법을 사용 해야 하는 가요.

::

:: 위 예제는 sample로 보여드리는 예제이며

::

:: 실질적으로는

::

:: PL/pgSQL 에서 error 발생시 지금까지처리해온 모든 transaction을

::

:: ROLLBACK 으로 처리해야 합니다..

::

:: 감사합니다.

::

::

::

::

::

[Top]
No.
제목
작성자
작성일
조회
3218이런 경우에는 어떤 쿼리문을 사용하면 될까요?
어떤생각
2001-07-31
2163
3221┕>Re: 비용이 문제되지 않는다면 subquery 를 사용하면...
정재익
2001-07-31 22:40:51
2301
3224 ┕>해결됬습니다. 감사합니다.
어떤생각
2001-08-01 16:44:51
2469
3215PL/pgSQL에서 insert의 확인과 에러가 발생하였을 경우...
김일형
2001-07-31
5465
3213SQL-92
권재군
2001-07-30
2116
3220┕>Re: SQL-92
정재익
2001-07-31 20:27:00
2371
3222 ┕>Re: Re: SQL-92 Draft 문서
정재익
2001-08-01 00:07:38
2231
3212transaction 관리에대한 질문
이성한
2001-07-30
2375
3214┕>Re: transaction 관리에대한 답변
김일형
2001-07-31 00:17:28
2397
3208자꾸 귀찮게 해서 지송합니다.
사이버
2001-07-30
1974
3210┕>Re: 자꾸 귀찮게 해서 지송합니다.
정재익
2001-07-30 11:37:29
2279
3205고수님 조언 부탁드립니다.
사이버
2001-07-30
1933
3206┕>Re: 고수님 조언 부탁드립니다.
정재익
2001-07-30 09:59:12
2196
3207 ┕>Re: Re: 고수님 조언 부탁드립니다.
사이버
2001-07-30 10:04:28
2194
3209  ┕>Re: Re: Re: 고수님 조언 부탁드립니다.
정재익
2001-07-30 11:33:11
1929
3204[정보(라고 할까나)] 효과적인(?) 삽질법
coral
2001-07-29
1981
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다