최근에는 시스템이 이런 질문을 답해야 하는 경우도 있다.

현대의 서비스들은 하나의 데이터를 여러 경로에서 변경할 수 있다.

문제가 발생했을때 어디서 변경되었는지를 알아야 원인을 쉽고 빠르게 추적할 수 있다.

감사 컬럼 추가

  -- ## 변경 추적 컬럼 - 감사(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주소

데이터 등록 - 웹 관리자 화면

관리자가 웹 어드민 툴에서 상품을 등록했다고 해보자.