Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

Versions available for this page: CUBRID 8.2.1 |  CUBRID 8.3.0 |  CUBRID 8.3.1 |  CUBRID 8.4.0 |  CUBRID 8.4.1 |  CUBRID 8.4.3 |  CUBRID 9.0.0 | 

트랜잭션 커밋

설명

데이터베이스에서 일어난 갱신들은 COMMIT WORK 문이 주어지기 전까지 영구히 저장되지 않는다. "영구히(permanently)" 저장된다는 것은 디스크에 저장이 완료되는 것을 의미한다. 키워드 WORK는 생략이 가능하다. 추가로 데이터베이스의 다른 사용자는 변경이 영구히 반영되기 전까지는 변경 사항을 볼 수 없다. 예를 들어 테이블에 새로운 행을 삽입했을 때 데이터베이스 트랜잭션이 커밋되기 전까지 그 행에 접근할 수 있는 것은 그 행을 삽입한 사용자뿐이다(UNCOMMITTED INSTANCES 격리 수준을 사용하면 다른 사용자가 일관성이 없는 커밋되지 않은 갱신을 볼 수도 있다).

트랜잭션이 커밋된 후에는 트랜잭션에서 획득한 모든 잠금이 해제된다.

구문

COMMIT [ WORK ]

예제

아래 예제의 데이터베이스 트랜잭션은 3개의 UPDATE 문으로 구성되는데, 3개의 stadium의 seats 칼럼 값을 변경한다. 결과를 검토하기 위해 갱신이 일어나기 전에 현재의 값과 이름을 검색한다. 기본적으로 csql은 자동으로 autocommit으로 작동되므로, 예제에서는 autocommit 모드를 off로 설정한 후 동작을 시험한다.

;autocommit off

AUTOCOMMIT IS OFF

SELECT name, seats

FROM stadium WHERE code IN (30138, 30139, 30140);

   name                        seats

==================================

    'Athens Olympic Tennis Centre'         3200

    'Goudi Olympic Hall'         5000

    'Vouliagmeni Olympic Centre'         3400

3개의 UPDATE 문은 각각의 stadium의 현재 seats을 가지고 있도록 한다. 명령이 수행되면 정확하게 입력이 되었는지 확인하기 위해 seats 테이블의 관련된 칼럼을 검색할 수 있다.

UPDATE stadium

SET seats = seats + 1000

WHERE code IN (30138, 30139, 30140);

 

SELECT name, seats FROM stadium WHERE code in (30138, 30139, 30140);

    name                        seats

===================================

    'Athens Olympic Tennis Centre'         4200

    'Goudi Olympic Hall'         6000

    'Vouliagmeni Olympic Centre'         4400

만약 갱신이 제대로 이루어 졌다면 변경을 영구적으로 만들 수 있다. 이때 아래처럼 COMMIT WORK 문을 사용한다.

COMMIT WORK;

참고 CUBRID에서는 트랜잭션 관리를 위하여 자동 커밋 모드를 설정할 수 있다.

자동 커밋 모드는 모든 SQL 문을 자동으로 커밋 또는 롤백하는 모드로서, 해당 SQL 문이 정상 수행되면 해당 트랜잭션을 자동 커밋하고, 오류가 발생하면 트랜잭션을 롤백한다.

이러한 자동 커밋 모드는 모든 인터페이스에서 지원되며, CCI, PHP, ODBC, OLE DB 인터페이스는 브로커 파라미터인 CCI_DEFAULT_AUTOCOMMIT을 통해 응용 프로그램 시작 시의 자동 커밋 모드를 설정할 수 있다. 브로커 파라미터 설정이 생략될 경우 기본값은 ON이다. CCI 인터페이스는 cci_set_autocommit(), PHP 인터페이스는 cubrid_set_autocommit() 함수를 이용하여 응용 프로그램 내에서 자동 커밋 모드 설정 여부를 변경할 수 있다.

CSQL 인터프리터에서 자동 커밋 모드를 설정하는 세션 명령어(;AUtocommit)에 대해서는 세션 명령어를 참조한다.