상품 가격이 변경되었음. 운여앚에게 물어보니 할인 이벤트때문에 변경했다고 한다. 하지만 이 담당자가 퇴사하거나, 시간이 오래되면 아무도 이 이유를 알 수 없게 된다.
이런 질문들에 답할 수 있으려면 변경 사유도 기록해야 한다.
-- ## 변경 추적 컬럼 - 변경 사유
-- ### 변경 사유 컬럼 추가
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)
);
두 가지 컬럼이 더 추가되었다.
change_type : 변경 사유에 대한 미리 지정된 코드
change_reason : 변경 시점에 자유롭게 적는 메시지
데이터를 넣어보자.
INSERT INTO product (name, price, stock_quantity, status, created_by, updated_by, change_type, change_reason)
VALUES ('스마트폰 케이스', 15000, 100, 'ACTIVE', 'admin_kim', 'admin_kim', 'CREATE', '신규 상품 등록');
INSERT INTO product (name, price, stock_quantity, status, created_by, updated_by, change_type, change_reason)
VALUES ('무선 이어폰', 89000, 50, 'ACTIVE', 'admin_lee', 'admin_lee', 'CREATE', '신규 상품 등록');
SELECT product_id, name, price, change_type, change_reason, updated_by
FROM product;

여기서 가격을 변경하는 상황을 가정해보자.