BEGIN에서는 COMMIT, 및 ROLLBACK문을 사용하여 PostgreSQL 트랜잭션을 처리하는 방법
데이터베이스 트랜잭션은 하나 이상의 작업으로 구성된 단일 작업 단위입니다.
PostgreSQL 트랜잭션은 원자적이며 일관성이 있으며 격리되고 내구성이 있습니다. 이러한 속성을 종종 ACID라고 합니다.
- Atomicity은 트랜잭션이 전부 아니면 전무(all or nothing) 방식으로 완료되도록 보장합니다.
- Consistency은 데이터베이스에 기록된 데이터에 대한 변경이 유효하고 사전 정의된 규칙을 따라야 함을 보장합니다.
- Isolation는 트랜잭션 무결성이 다른 트랜잭션에 표시되는 방식을 결정합니다.
- Durability은 커밋된 트랜잭션이 데이터베이스에 영구적으로 저장되도록 합니다.
비긴: 트랜잭션을 시작하려면 다음 문을 사용합니다.
BEGIN TRANSACTION ;
or
BEGIN WORK;
or
BEGIN;
커밋: 변경 사항이 다른 세션(또는 사용자)에게 표시되도록 합니다.
COMMIT WORK ;
COMMIT TRANSACTION;
COMMIT;
롤백 : 현재 트랜잭션의 변경 사항을 롤백하거나 실행 취소합니다.
ROLLBACK WORK;
ROLLBACK TRANSACTION;
ROLLBACK;
반응형
DROP TABLE IF EXISTS accounts;
CREATE TABLE accounts (
id INT GENERATED BY DEFAULT AS IDENTITY,
name VARCHAR(100) NOT NULL,
balance DEC(15,2) NOT NULL,
PRIMARY KEY(id)
);
INSERT INTO accounts(name,balance)
VALUES('Bob',10000);
BEGIN;
INSERT INTO accounts(name,balance)
VALUES('Alice',10000);
SELECT
id,
name,
balance
FROM
accounts;
-- start a transaction
BEGIN;
-- insert a new row into the accounts table
INSERT INTO accounts(name,balance)
VALUES('Alice',10000);
-- commit the change (or roll it back later)
COMMIT;
-- start a transaction
BEGIN;
-- deduct 1000 from account 1
UPDATE accounts
SET balance = balance - 1000
WHERE id = 1;
-- add 1000 to account 2
UPDATE accounts
SET balance = balance + 1000
WHERE id = 2;
-- select the data from accounts
SELECT id, name, balance
FROM accounts;
-- commit the transaction
COMMIT;
-- begin the transaction
BEGIN;
-- deduct the amount from the account 1
UPDATE accounts
SET balance = balance - 1500
WHERE id = 1;
-- add the amount from the account 3 (instead of 2)
UPDATE accounts
SET balance = balance + 1500
WHERE id = 3;
-- roll back the transaction
ROLLBACK;
반응형
'SW ENGINEERING > Postgres' 카테고리의 다른 글
[PostgreSQL] BASIC - Data Types - 1 (0) | 2021.09.06 |
---|---|
[PostgreSQL] Import CSV File & export CSV File (0) | 2021.09.06 |
[PostgreSQL] BASIC - Upsert (0) | 2021.09.06 |
[PostgreSQL] BASIC - DELETE (0) | 2021.09.06 |
[PostgreSQL] BASIC - UPDATE Join (0) | 2021.09.06 |
최근댓글