최근에는 시스템이 이런 질문을 답해야 하는 경우도 있다.
현대의 서비스들은 하나의 데이터를 여러 경로에서 변경할 수 있다.
문제가 발생했을때 어디서 변경되었는지를 알아야 원인을 쉽고 빠르게 추적할 수 있다.
-- ## 변경 추적 컬럼 - 감사(Audit) 컬럼
-- ### 감사 컬럼 추가
DROP TABLE IF EXISTS product;
CREATE TABLE product (
product_id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(200) NOT NULL,
price INT NOT NULL,
stock_quantity INT NOT NULL DEFAULT 0,
status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE',
-- 기본 변경 추적 컬럼
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
created_by VARCHAR(100) NOT NULL,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
updated_by VARCHAR(100) NOT NULL,
-- 변경 사유 컬럼
change_type VARCHAR(50),
change_reason VARCHAR(500),
-- 감사(Audit) 컬럼
source_system VARCHAR(50),
client_ip VARCHAR(50)
);
추가된 컬럼 두개는 다음과 같다.
source_system : 변경이 발생한 시스템(WEB_ADMIN, API, BATCH 등…)
client_ip : 요청이 발생한 클라이언트 IP주소
관리자가 웹 어드민 툴에서 상품을 등록했다고 해보자.