PostgreSQL - 트랜잭션: 초보자 가이드

안녕하세요, 미래의 데이터베이스 마법사 여러분! 오늘 우리는 PostgreSQL 트랜잭션의 마법의 세계로 들어가 볼 거예요. 코드를 한 줄도 작성해 본 적이 없어도 걱정 마세요 - 이 여정에서 여러분의 친절한 안내자가 되겠습니다. 이 튜토리얼이 끝나면, 여러분은 트랜잭션을 프로처럼 다루게 될 거예요!

PostgreSQL - Transactions

트랜잭션은 무엇인가요?

먼저 트랜잭션에 대해 이해해 보겠습니다. 여러분이 한 은행 계좌에서 다른 계좌로 돈을 이체하는 상황을 생각해 보세요. 돈이 하나의 계좌에서 사라지고 다른 계좌에 나타나지 않기를 원하지 않을 거예요, 아닌가요? 이때 트랜잭션이 유용하게 사용됩니다. 트랜잭션은 데이터베이스 연산이 모두 성공하거나 모두 실패하는 것을 보장합니다. 이는 "전부 또는 전혀 아님"의 거래와 같습니다.

트랜잭션 제어

이제 PostgreSQL에서 이러한 트랜잭션을 어떻게 제어하는지 살펴보겠습니다. 우리는 몇 가지 마법의 말(명령어)을 사용할 수 있습니다:

명령어 설명
BEGIN 새로운 트랜잭션을 시작합니다
COMMIT 트랜잭션에서 만든 모든 변경 사항을 저장합니다
ROLLBACK 트랜잭션에서 만든 모든 변경 사항을 취소합니다

이 명령어들은 데이터베이스 고속도로의 교통 신호와 같습니다. BEGIN은 녹색 신호로 "가자!"라고 말하며, COMMIT은 결선의 체크ered 기를 Koppenhagener와 같고, ROLLBACK은 "아이고, 다시 시작해보자!"라고 말하는 빨간 신호입니다.

BEGIN 명령어

BEGIN 명령어부터 시작해 보겠습니다. 이는 "Alright PostgreSQL, 주의하세요! 우리는 중요한 일을 할 거예요."라고 말하는 것과 같습니다.

BEGIN;
-- 여러분의 데이터베이스 연산이 여기에 들어갑니다

BEGIN을 입력하면, PostgreSQL은 여러분이 하려는 모든 변경 사항을 추적할 준비를 합니다. 이는 여러분이 노트북에 새로운 페이지를 열고, 이제부터 쓰는 모든 것이 이 트랜잭션의 일부가 될 것이라고 할 수 있습니다.

COMMIT 명령어

다음은 우리의 친구 COMMIT입니다. 이제 마법이 일어납니다!

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
COMMIT;

이 예제에서 우리는 계좌 1에서 $100을 계좌 2로 이체하고 있습니다. COMMIT이 끝에 와서 PostgreSQL에 "좋아요, 여기서 끝났어요. 이 변경 사항을 영구히 저장하세요!"라고 말합니다. 이는 여러분이 좋아하는 비디오 게임에서 저장 버튼을 누르는 것과 같습니다 - 여러분의 진행 상황이 이제 고정되었습니다.

ROLLBACK 명령어

하지만 무언가 잘못되면 어떻게 하죠? 이때 ROLLBACK이 구원자로 등장합니다!

BEGIN;
UPDATE accounts SET balance = balance - 1000000 WHERE account_id = 1;
-- 아이고! 우리는 천만 달러를 이체하려는 것이 아니었어요!
ROLLBACK;

ROLLBACK은 여러분의 신뢰할 수 있는 지우개입니다. 마지막 BEGIN 이후에 만든 모든 변경 사항을 지운다. 이 예제에서 우리는 실수로 천만 달러를 이체하려고 했지만, ROLLBACK이 우리를 분노하는 고객과 잃을 수 있는 직업으로부터 구원해 주었습니다!

실제 세계의 예제

이제 모든 것을 하나의 더 복잡한 예제로 통합해 보겠습니다. 우리는 작은 온라인 서점을 운영하고 있다고 상상해 봅시다:

BEGIN;

-- 우리의 재고에 새로운 책을 추가합니다
INSERT INTO books (title, author, price) VALUES ('The PostgreSQL Wizard', 'Data McDatabase', 29.99);

-- 재고 수량을 업데이트합니다
UPDATE inventory SET stock = stock + 100 WHERE book_id = (SELECT id FROM books WHERE title = 'The PostgreSQL Wizard');

-- 아이고! 우리는 책의 가격을 잘못 설정했습니다
UPDATE books SET price = 24.99 WHERE title = 'The PostgreSQL Wizard';

-- 모든 것이 잘 보이니, 이 변경 사항을 영구히 저장해 둡시다
COMMIT;

이 트랜잭션에서 우리는 다음을 했습니다:

  1. 우리의 카달로그에 새로운 책을 추가했습니다
  2. 재고에 100부의 책을 추가했습니다
  3. 책의 가격이 너무 높았다는 것을 깨달아 가격을 조정했습니다

우리가 트랜잭션을 사용했기 때문에, 이 모든 변경 사항이 함께 일어납니다. 만약 어떤 부분이 실패한다면 (예를 들어, 재고 테이블이 잠겨 있을 수 있습니다), 변경 사항이 전혀 적용되지 않습니다. 이는 우리의 데이터베이스가 일관성을 유지하고 서점이 원활하게 운영되도록 합니다!

무언가 잘못되었을 때

ROLLBACK을 사용해야 하는 시나리오를 보겠습니다:

BEGIN;

-- 책의 가격을 업데이트하려고 시도합니다
UPDATE books SET price = 19.99 WHERE title = 'The PostgreSQL Wizard';

-- 오호! 우리는 이 책이绝版된 것을 깨달았습니다
-- 우리는 이 책의 가격을 업데이트하지 않기를 원합니다

ROLLBACK;

여기서 우리는 책의 가격을 업데이트하려고 했지만, 이 책이 판매할 수 없는 것을 알게 되었습니다. ROLLBACK을 사용하여 데이터베이스에 어떤 변경 사항도 적용되지 않도록 합니다. 이는 전체 트랜잭션이 일어나지 않았던 것과 같습니다!

결론

이제 여러분은 PostgreSQL 트랜잭션의 세계로 첫 걸음을 내디디셨습니다. 기억해 두세요:

  • BEGIN은 트랜잭션을 시작합니다
  • COMMIT은 여러분의 변경 사항을 저장합니다
  • ROLLBACK은 여러분의 "되돌리기" 버튼입니다

트랜잭션은 여러분의 데이터베이스 연산의 안전망입니다. 그들은 데이터가 계획된대로 일관성을 유지하도록 보장합니다.

PostgreSQL 여정을 계속하면서, 여러분은 트랜잭션이 여러분의 가장 친한 친구가 될 것입니다. 그들은 여러분이 밤에 편안하게 잠을 잘 수 있도록 도와줄 것입니다. 데이터베이스 연산이 안전하고 안정적이라는 확신을 줄 것입니다.

계속 연습하고, 호기심을 유지하고, 곧 여러분이 자신만의 PostgreSQL 마법사가 될 것입니다! 행복하게 코딩하시고, 여러분의 트랜잭션이 항상 COMMIT되기를 바랍니다!

Credits: Image by storyset