-- ===================================================================== -- 휴면(장기 미사용) 대상 확장 : COMTNDIAPAUSEMBER 회원유형 구분 컬럼 추가 -- 문화품앗이 개인정보보호 기능개선 사업 (SFR-002, 장기 미사용 계정 관리) -- 개발항목 #7 - 담당: arko-privacy-authctrl (Fork A) -- 작성일: 2026-07-21 DB: MySQL 8 / MariaDB -- --------------------------------------------------------------------- -- [배경] 기존 휴면 대상은 일반회원(COMTNGNRLMBER)뿐이며, 휴면 테이블 -- COMTNDIAPAUSEMBER 에는 회원유형 구분 컬럼이 없다. 개인정보취급자 -- (COMTNEMPLYRINFO)를 휴면 대상에 포함(#7)하면서 일반회원 휴면/해제 -- 흐름과 혼선되지 않도록 회원유형 구분 컬럼을 신설한다. -- -- [안전] DEFAULT 'GNR'(일반회원)로 신설 → 기존 적재 행은 자동 'GNR' 처리되어 -- 기존 selectDiapauseList(일반회원 join COMTNGNRLMBER) 흐름 무영향. -- 취급자 휴면 행은 'EMP'로 적재하여 별도 select/notify 경로로 처리한다. -- -- [멱등] MySQL 8 은 ADD COLUMN/INDEX IF NOT EXISTS 를 지원하지 않으므로 -- information_schema 로 존재를 확인해 없을 때만 실행한다(재실행 안전). -- MySQL 8 / MariaDB 10.x 공통 동작. -- ===================================================================== SET @ddl := IF( (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'COMTNDIAPAUSEMBER' AND COLUMN_NAME = 'MBER_TY_CODE') > 0, 'SELECT ''SKIP: COMTNDIAPAUSEMBER.MBER_TY_CODE already exists'' AS msg', 'ALTER TABLE COMTNDIAPAUSEMBER ADD COLUMN MBER_TY_CODE CHAR(3) NOT NULL DEFAULT ''GNR'' COMMENT ''회원유형 GNR:일반회원 EMP:개인정보취급자''' ); PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 조회 성능(취급자/일반 분리 조회) 보조 인덱스 SET @ddl := IF( (SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'COMTNDIAPAUSEMBER' AND INDEX_NAME = 'IX_DIAPAUSE_MBERTY') > 0, 'SELECT ''SKIP: IX_DIAPAUSE_MBERTY already exists'' AS msg', 'ALTER TABLE COMTNDIAPAUSEMBER ADD INDEX IX_DIAPAUSE_MBERTY (MBER_TY_CODE, DIAPAUSE_STAT)' ); PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- [검증] SHOW CREATE TABLE COMTNDIAPAUSEMBER; -- [롤백] ALTER TABLE COMTNDIAPAUSEMBER DROP INDEX IX_DIAPAUSE_MBERTY, DROP COLUMN MBER_TY_CODE;