2009-04-30 6 views

답변

5

는 예를 들어 here를 참조 트랜잭션

  • 커밋 트랜잭션을 시작합니다. 하지만 기본적으로

    BEGIN TRANSACTION 
    COMMIT TRANSACTION 
    ROLLBACK 
    
  • 14

    실제로 답변은 여기에 표시된 것보다 약간 복잡합니다. 사실 트랜잭션은 ANSI 표준으로되어 있으며, DB2 일 수 있습니다.

    z/OS 용 DB2는 다른 변형 (LUW, Linux-Unix-Windows, 가장 일반적 임)과 매우 다른 짐승 일 수 있습니다. 호언 장담에 빠질 위험에 놓이게되면 DB2에 대해 거의 무의미한 생각을하게됩니다. 당신은 IBM 데이터베이스의 특정 변종에 대해 이야기하고 있지만, 하나의 데이터베이스에서 작동하는 것은 다른 데이터베이스에서 완전히 무효가 될 수 있습니다. 나는 OP가 사용하고 있던 어떤 맛이라도 BEGIN TRANSACTION 대답이 받아 들여 졌기 때문에 z/OS 하나가 아니라고 생각할 것이다.

    DB2 z/OS와 트랜잭션을 사용하려고 시도하는 사람들에게 다음과 같은 설명이 있습니다. 메인 프레임 용 DB2에는 명시 적 트랜잭션이 없습니다. BEGIN TRANSACTION 또는 다른 유사한 구조가 없습니다. 트랜잭션은 암시 적으로 시작되고 (일반적으로 문서의 작업 단위라고 함) 명시 적으로 커밋되거나 롤백됩니다 (일반적으로 Toad와 같은 많은 GUI 도구는 한 번 당신에게 몰래 들어가는 자동 커밋 기능을가집니다). 9.1 Z/OS SQL 메뉴얼 (28 페이지, http://www-01.ibm.com/support/docview.wss?uid=swg27011656#manuals에서 구입 가능)에서

    :

    "애플리케이션 프로세스가 시작될 때 작업 단위가 시작되는 일 의 수단도 개시 될 때. 이전 작업 단위 (UOW)는 응용 프로그램 프로세스의 끝 이외의 다른 작업에 의해 종료됩니다. 작업 단위는 완료 작업, 완료 롤백 작업 또는 응용 프로그램 프로세스의 종료에 의해 종료됩니다 ( 작업이 커밋 또는 롤백되는 경우). 데이터베이스가 변경된 작업 단위 내에서만 변경됩니다. "

    스크립트를 작성할 때 가장 가까운 점은 수동으로 세이브 포인트를 지정하는 것입니다.

    SAVEPOINT A ON ROLLBACK RETAIN CURSORS; 
    
    UPDATE MYTABLE SET MYCOL = 'VAL' WHERE 1; 
    
    ROLLBACK WORK TO SAVEPOINT A; 
    

    는 표면적으로, 이러한 명시 적 트랜잭션과 유사하지만, 그들은하지 않습니다 :

    이는 다음과 같습니다. 대신, 그들은 단일 암시 적 트랜잭션 내에서 실제로 시점에 불과합니다. 많은 목적을 위해 충분할 수도 있지만, 개념상의 차이점을 인식하는 것이 중요합니다.

    +0

    iSeries (AS/400) 플랫폼에서 DB2를 처리 할 때 유사한 문제가 있습니까? (그 시스템에 관해서는 명확한 newb입니다.) –

    +0

    iSeries의 맛은 잘 모르겠지만, 그 대답은 '예'라고 생각합니다. 버전 5 매뉴얼 ([http://www-01.ibm.com/support/docview.wss?uid=swg27008735](http://www-01.ibm.com/support/docview.wss?uid=swg27008735)), 내가 가장 빨리 찾을 수 있었던 것은 23 페이지에서 위에 인용 한 것과 같은 해설을 가지고있다. – Michael

    +3

    나는 이것이 정답으로 표시되어야한다고 생각한다. –

    관련 문제