트랜잭션 Transaction
-
정보의 교환이나 데이터베이스 갱신 등 일련의 작업들에 대한 연속처리단위
-
데이터베이스의 무결성이 보장되는 상태에서 요청된 작업을 완수하기 위한 작업의 기본 단위로 간주함
⇒ “데이터베이스의 상태를 변화시키는 작업의 모음”

Commit
- 트랜잭션은 확정 신호를 알려줘야 데이터에 반영되는데, 확정 신호를
commit이라 부름
CREATE TABLE user (
id varchar(10) primary Key,
name varchar(10)
);
INSERT INTO user VALUES ('id1', 'user1');
INSERT INTO user VALUES ('id2', 'user2');
COMMIT;
Rollback
- 앞으로 변경될 작업에 대한 내용을 취소하는 개념 ↔ commit
INSERT INTO user VALUES ('id3', 'user3');
ROLLBACK;
INSERT INTO user VALUES ('id4', 'user4');
COMMIT;
→ id3는 추가되지 않고, id4만 추가됨
- 트랜잭션은 여러 개의 작업들을 하나의 실행 유닛으로 묶은 것이므로 각 트랜잭션은 하나의 특정 작업으로 시작해 함께 묶인 모든 작업들을 완료해야 끝남
- 한 작업이라도 실패하면 모두 실패하기 때문에 트랜잭션은 미완료된 단계 없이 전부 성공해야 함
ACID
- 데이터베이스 내에서 일어나는 하나의 트랜잭션의 안전성을 보장하기 위한 성질
- atomicity, consistency, isolation, durability
- 원자성 Atomicity
- 하나의 트랜잭션을 구성하는 작업들은 전부 성공하거나 전부 실패해야 한다
- 계좌이체:
- 계좌 A 에서 돈을 꺼냅니다.
- 계좌 B 에 돈을 추가합니다.
- 상태 일관성 Consistency
- 하나의 트랜잭션 이전과 이후 데이터베이스 상태는 이전과 같이 유효해야 함 = 데이터베이스의 제약이나 규칙에 의거한 데이터베이스이어야 함
- 모든 계좌에 잔고가 있어야 한다는 제약이 있다면, 계좌 a에 잔고가 없다면 이는 제약을 위반한 것이므로 데이터베이스의 상태가 일관되지 않다는 것을 의미
- 고립성 Isolation
- 각 트랜잭션은 서로 독립되어야 한다
- 동시에 여러 개 트랜잭션을 수행한 결과는 서로 독립되어 있으므로 연속으로 실행된 것과 동일한 결과여야 함
- 지속성 Durability
- 하나의 트랜잭션이 성공적으로 수행되었다면 해당 트랜잭션에 대한 로그가 남고 어떤 오류가 발생해도 해당 기록은 영구적이어야 함
SQL MORE
- 집합 연산