트랜잭션은 여러개의 작업을 하나로 묶은 실행 유닛입니다.
하나의 트랜잭션에 묶여있는 특정 작업들이 모두 완료되어야 트랜잭션이 정상적으로 종료됩니다.
만약 하나의 트랜잭션 안에있는 작업 중 하나라도 정상적으로 완료되지 않으면, 트랜잭션 전체의
작업이 실패하게되고, 반대로 모든 작업이 성공해야 하나의 트랜잭션이 성공하게 됩니다.
트랜잭션의 안전성을 보장하기 위한 데이터베이스의 원칙으로 ACID가 있습니다.
'하나의 트랜잭션은 모든 작업이 전부 성공하거나, 전부 실패해야합니다.'
트랜잭션 안에 있는 작업의 일부만 성공하게 되면, 특정의 작업의 업데이트가 일어나도 누가 업데이트 했는지 모르거나, 업데이트 날짜가 누락되는 등 데이터가 오염될 수 있습니다.
트랜잭션 이전과 이후, 데이터베이스의 상태는 이전과 같이 유효해야 합니다. 여기서 유효해야한다는 뜻은 데이터베이스의 변화가 없어야 한다는 것이 아니라, 트랜잭션 전이든 후이든 기본적으로 가지고있는 데이터베이스의 제약을 만족한 상태로 있어야 한다는 것입니다. 즉 데이터베이스가 가지고 있는 규칙을 일관되게 만족해야 하는 원칙입니다.
모든 트랜잭션은 다른 트랜잭션으로부터 독립되어야 합니다.
독립되어야 한다는 것의 의미는, 하나의 트랜잭션이 다른 트랜잭션에 영향을 주지 말아야 한다는 것입니다. 예를 들어 송금 트랜잭션과, 출금 트랜잭션이 있으면 송금 트랜잭션을 실행했다고 해서 출금 트랜잭션이 일어나서는 안되는 것입니다.
트랜잭션이 성공적으로 수행되었다면, 트랜잭션 수행에 대한 로그기록은 영구적으로 남아야합니다.