트랜잭션은 일련의 작업을 단일 실행 단위로 그룹화합니다. 각 트랜잭션은 특정 작업으로 시작하고 그룹의 모든 작업이 성공적으로 완료되면 종료됩니다. 작업 중 하나라도 실패하면 트랜잭션이 실패합니다. 따라서 트랜잭션에는 두 가지 결과만 있습니다. 성공 또는 실패 .
A 계좌에서 B 계좌로 150달러를 이체하는 거래의 예:
1. read(A) 2. A:= A – 150 3. write(A) 4. read(B) 5. B:= B + 150 6. write(B)>
불완전한 단계로 인해 트랜잭션이 실패합니다. 데이터베이스 트랜잭션은 정의에 따라 원자성, 일관성, 격리성 및 내구성을 갖춰야 합니다.
이들은 대중적으로 다음과 같이 알려져 있습니다. 산 속성. 이러한 속성은 충돌 없이 여러 트랜잭션의 동시 실행을 보장할 수 있습니다.
거래의 속성
- 원자성: 거래의 결과는 완전히 성공할 수도 있고 완전히 실패할 수도 있습니다. 트랜잭션 중 한 부분이 실패하면 전체 트랜잭션을 롤백해야 합니다.
- 일관성: 트랜잭션은 데이터베이스를 하나의 유효한 상태에서 다른 유효한 상태로 이동하여 무결성 제한을 유지합니다.
- 격리: 동시 트랜잭션은 서로 격리되어 데이터의 정확성을 보장합니다.
- 내구성: 트랜잭션이 커밋되면 시스템 오류가 발생하더라도 수정 사항이 그대로 유지됩니다.
SQL을 사용하여 트랜잭션 제어 명령을 구현하는 방법은 무엇입니까?
다음 명령은 트랜잭션을 제어하는 데 사용됩니다. 이러한 문은 테이블을 생성하는 동안 사용할 수 없으며 다음과 같은 DML 명령에만 사용된다는 점에 유의하는 것이 중요합니다. 끼워 넣다 , 업데이트 , 그리고 삭제 .
BEGIN TRANSACTION 명령
명시적 또는 로컬 트랜잭션의 시작점을 나타냅니다.
통사론:
거래 시작 transaction_name ;
SET TRANSACTION 명령
트랜잭션 격리 수준 및 액세스 모드와 같은 현재 트랜잭션의 속성 값은 MySQL의 SET TRANSACTION 문을 사용하여 설정됩니다.
통사론:
트랜잭션 설정 [ 읽기 쓰기 | 읽기 전용 ];
COMMIT 명령
단일 트랜잭션 내의 모든 명령문과 모든 것이 순서대로 이루어지면 모든 변경 사항이 데이터베이스에 함께 기록됩니다. 헌신적인 . COMMIT 명령은 마지막 COMMIT 또는 ROLLBACK 명령 이후의 모든 트랜잭션을 데이터베이스에 저장합니다.
통사론:
저지르다;
예:
샘플 표1

산출
다음은 테이블에서 age = 20인 레코드를 삭제한 다음 데이터베이스에서 변경 사항을 COMMIT하는 예입니다.
질문
DELETE FROM Student WHERE AGE = 20; COMMIT;>
산출
따라서 테이블에서 두 행이 삭제되고 SELECT 문은 다음과 같습니다.

산출
ROLLBACK 명령
SQL 그룹화된 명령문에서 오류가 발생하면 모든 변경 사항을 중단해야 합니다. 변경 사항을 되돌리는 프로세스를 호출합니다. 롤백 . 이 명령은 마지막 COMMIT 또는 ROLLBACK 명령이 실행된 이후 트랜잭션을 실행 취소하는 데에만 사용할 수 있습니다.
ROLLBACK 명령 구문:
롤백;
예:
위의 예에서 샘플 테이블1 ,
테이블에서 age = 20인 레코드를 삭제한 다음 데이터베이스의 변경 사항을 ROLLBACK합니다.
질문
DELETE FROM Student WHERE AGE = 20; ROLLBACK;>
산출

산출
SAVEPOINT 명령
세이브포인트 ROLLBACK할 트랜잭션 그룹 내에 지점을 생성합니다.
SAVEPOINT는 전체 트랜잭션을 롤백하지 않고도 트랜잭션을 특정 지점으로 롤백할 수 있는 트랜잭션의 지점입니다.
저장점 명령 구문:
SAVEPOINT SAVEPOINT_NAME;
이 명령어는 모든 트랜잭션 중 SAVEPOINT 생성에만 사용됩니다.
일반적으로 ROLLBACK은 트랜잭션 그룹을 실행 취소하는 데 사용됩니다.
컬렉션 자바
Savepoint 명령으로 롤백하기 위한 구문:
SAVEPOINT_NAME으로 롤백합니다.
언제든지 SAVEPOINT로 ROLLBACK하여 적절한 데이터를 원래 상태로 되돌릴 수 있습니다.
예:
위의 예에서 샘플 테이블1 , 테이블에서 연령 = 20인 레코드를 삭제한 다음 저장점을 유지하여 데이터베이스의 변경 사항을 ROLLBACK합니다.
질문
SAVEPOINT SP1; //Savepoint created. DELETE FROM Student WHERE AGE = 20; //deleted SAVEPOINT SP2; //Savepoint created.>
여기서 SP1은 삭제 전에 생성된 첫 번째 SAVEPOINT입니다. 이 예에서는 삭제가 한 번 발생했습니다.
다시 삭제하면 SAVEPOINT SP2가 생성됩니다.
산출

산출
삭제가 이루어졌습니다. 마음이 바뀌어 삭제 전 SP1로 식별한 SAVEPOINT로 ROLLBACK하기로 결정했다고 가정해 보겠습니다.
이 문으로 삭제가 취소됩니다.
질문
ROLLBACK TO SP1; //Rollback completed>
산출

산출
RELEASE SAVEPOINT 명령
이 명령은 생성한 SAVEPOINT를 제거하는 데 사용됩니다.
통사론:
SAVEPOINT SAVEPOINT_NAME 해제
SAVEPOINT가 해제되면 더 이상 ROLLBACK 명령을 사용하여 마지막 SAVEPOINT 이후 수행된 트랜잭션을 실행 취소할 수 없습니다.
이는 데이터베이스 트랜잭션을 시작하는 데 사용되며 이후 트랜잭션의 특성을 지정하는 데 사용됩니다.
결론
- SQL 문은 트랜잭션을 사용하여 그룹화됩니다.
- 그들은 모든 변경이 이루어지거나 전혀 변경되지 않을 것이라고 약속합니다.
- 원자성, 일관성, 격리성 및 내구성이라는 ACID 품질을 통해 신뢰성이 보장됩니다.
- BEGIN TRANSACTION으로 트랜잭션을 시작하고 COMMIT 또는 ROLLBACK으로 완료하여 변경 사항을 완료하거나 실행 취소합니다.