다음을 통해 공유


트랜잭션: 트랜잭션이 업데이트에 미치는 영향(ODBC)

데이터 원본대한 업데이트 편집 버퍼(트랜잭션 외부에서 사용되는 것과 동일한 방법)를 사용하여 트랜잭션 중에 관리됩니다. 레코드 집합의 필드 데이터 멤버는 현재 레코드를 포함하는 편집 버퍼 역할을 하며, 레코드 집합은 해당 레코드 집합이 AddNew 임시로 백업됩니다 Edit. 작업 중에 Delete 현재 레코드는 트랜잭션 내에서 백업되지 않습니다. 편집 버퍼 및 업데이트에서 현재 레코드를 저장하는 방법에 대한 자세한 내용은 Recordset: How Recordsets Update Records(ODBC)를 참조하세요.

참고 항목

대량 행 페치를 구현한 경우 호출AddNewEdit하거나 Delete호출할 수 없습니다. 대신 사용자 고유의 함수를 작성하여 데이터 원본에 대한 업데이트를 수행해야 합니다. 대량 행 페치 에 대한 자세한 내용은 레코드 집합: 대량 레코드 가져오기(ODBC)를 참조하세요.

트랜잭션 중, AddNewEditDelete 작업을 커밋하거나 롤백할 수 있습니다. 이 영향으로 CommitTrans Rollback 인해 현재 레코드가 편집 버퍼로 복원되지 않을 수 있습니다. 현재 레코드가 제대로 복원되었는지 확인하려면 해당 레코드와 멤버 함수가 업데이트 함수를 사용하는 방법을 CommitTrans Rollback 이해하는 것이 중요합니다CRecordset.CDatabase

CommitTrans가 업데이트 미치는 영향

다음 표에서는 트랜잭션에 미치는 CommitTrans 영향을 설명합니다.

CommitTrans가 업데이트 미치는 영향

연산 데이터 원본의 상태
AddNewUpdate, 및 CommitTrans 새 레코드가 데이터 원본에 추가됩니다.
AddNew (제외 Update) 및 CommitTrans 새 레코드가 손실됩니다. 레코드가 데이터 원본에 추가되지 않았습니다.
EditUpdate, 및 CommitTrans 데이터 원본에 커밋된 편집
Edit (제외 Update) 및 CommitTrans 레코드에 대한 편집 내용이 손실됩니다. 데이터 원본에서 변경되지 않은 다시 기본 기록합니다.
Delete 다음 CommitTrans 데이터 원본에서 삭제된 레코드입니다.

롤백이 트랜잭션에 미치는 영향

다음 표에서는 트랜잭션에 미치는 Rollback 영향을 설명합니다.

롤백이 트랜잭션에 미치는 영향

연산 현재 레코드의 상태 또한 데이터 원본의 상태
AddNewUpdate, Rollback 현재 레코드의 콘텐츠는 새 레코드를 위한 공간을 확보하기 위해 일시적으로 저장됩니다. 편집 버퍼에 새 레코드가 입력됩니다. 호출된 후 Update 현재 레코드가 편집 버퍼로 복원됩니다. 만든 데이터 원본 Update 에 대한 추가는 역방향입니다.
AddNew (without Update), then Rollback 현재 레코드의 콘텐츠는 새 레코드를 위한 공간을 확보하기 위해 일시적으로 저장됩니다. 편집 버퍼에는 새 레코드가 포함됩니다. 편집 버퍼를 비어 있는 새 레코드로 복원하려면 다시 호출 AddNew 합니다. 또는 (0)을 호출 Move하여 이전 값을 편집 버퍼로 복원합니다. 호출되지 않았기 때문에 Update 데이터 원본이 변경되지 않았습니다.
EditUpdate, Rollback 현재 레코드의 편집되지 않은 버전은 일시적으로 저장됩니다. 편집 버퍼의 내용에 대한 편집이 이루어집니다. 호출된 후에 Update 는 편집되지 않은 버전의 레코드가 일시적으로 저장됩니다. Dynaset: 현재 레코드를 스크롤한 다음 다시 편집 버퍼로 편집되지 않은 버전의 레코드를 복원합니다.

스냅샷: 데이터 원본에서 레코드 집합을 새로 고치는 호출 Requery 입니다.
데이터 원본에 대한 Update 변경 내용은 취소됩니다.
Edit (without Update), then Rollback 현재 레코드의 편집되지 않은 버전은 일시적으로 저장됩니다. 편집 버퍼의 내용에 대한 편집이 이루어집니다. 편집 버퍼에 레코드의 편집되지 않은 버전을 복원하려면 다시 호출 Edit 합니다. 호출되지 않았기 때문에 Update 데이터 원본이 변경되지 않았습니다.
Delete 다음 Rollback 현재 레코드의 콘텐츠가 삭제됩니다. 데이터 원본에서 현재 레코드의 콘텐츠를 복원하기 위한 호출 Requery 입니다. 데이터 원본에서의 데이터 삭제는 취소됩니다.

참고 항목

트랜잭션(ODBC)
트랜잭션: 레코드 집합에서 트랜잭션 수행(ODBC)
CDatabase 클래스
CRecordset 클래스