-- [SQL-9-1-3-a]
SELECT pg_current_xact_id();
SQL
복사
-- [SQL-9-1-3-b]
BEGIN; -- 트랜잭션을 명시적으로 시작
-- 1. xid를 강제로 할당
-- 아래 SQL은 테스트를 위해 미리 xid를 할당 받은 것이다.
-- 기본적으로는 처음 데이터 변경(UPDATE,INSERT,DELETE)시에 자동 할당 받는다.
SELECT pg_current_xact_id(); -- 3574337
-- 2. ACC1을 조회
-- xmin이 위에서 조회한 xid보다 작음(현재 트랜잭션보다 이전에 생성된 버전)
-- xmax=0
SELECT t1.ctid ,t1.xmin ,t1.xmax, t1.acc_no
FROM startdbpg.ms_acc t1
WHERE t1.acc_no = 'ACC1';
-- 3. UPDATE 수행
UPDATE startdbpg.ms_acc t1
SET bal_amt = t1.bal_amt + 500
WHERE t1.acc_no = 'ACC1';
-- 4. ACC1을 조회
-- 위에서 할당 받은 xid와 xmin이 동일, xmax=0
SELECT t1.ctid ,t1.xmin ,t1.xmax, t1.acc_no
FROM startdbpg.ms_acc t1
WHERE t1.acc_no = 'ACC1';
COMMIT;
SQL
복사
