Files
jongryangje/writable/database/sales_agency_migrate_to_kind_code_name.sql

40 lines
1.5 KiB
MySQL
Raw Normal View History

-- 기존 sales_agency(사업자번호·대표자 등) → 구분·코드·명 스키마로 변경
-- (이미 신규 스키마면 건너뛰거나 에러 날 수 있음 — 실행 전 백업 권장)
-- 1) 신규 컬럼
ALTER TABLE `sales_agency`
ADD COLUMN `sa_kind` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '대행소 구분' AFTER `sa_lg_idx`,
ADD COLUMN `sa_code` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '대행소 코드' AFTER `sa_kind`;
-- 2) 코드·구분 채우기 (사업자번호 → 코드, 없으면 SA+번호)
UPDATE `sales_agency`
SET `sa_code` = CASE
WHEN `sa_biz_no` IS NOT NULL AND TRIM(`sa_biz_no`) <> '' THEN LEFT(TRIM(`sa_biz_no`), 50)
ELSE CONCAT('SA', `sa_idx`)
END
WHERE `sa_code` = '';
UPDATE `sales_agency` SET `sa_kind` = '기타' WHERE `sa_kind` = '' OR `sa_kind` IS NULL;
-- 3) 동일 지자체 내 코드 중복 제거 (있으면 두 번째부터 접미사)
-- (간단 처리: sa_idx 붙이기)
UPDATE `sales_agency` s1
INNER JOIN (
SELECT `sa_lg_idx`, `sa_code`, MIN(`sa_idx`) AS keep_idx, COUNT(*) AS cnt
FROM `sales_agency`
GROUP BY `sa_lg_idx`, `sa_code`
HAVING cnt > 1
) d ON d.sa_lg_idx = s1.sa_lg_idx AND d.sa_code = s1.sa_code AND s1.sa_idx > d.keep_idx
SET s1.sa_code = LEFT(CONCAT(s1.sa_code, '_', s1.sa_idx), 50);
-- 4) 불필요 컬럼 제거
ALTER TABLE `sales_agency`
DROP COLUMN `sa_biz_no`,
DROP COLUMN `sa_rep_name`,
DROP COLUMN `sa_tel`,
DROP COLUMN `sa_addr`,
DROP COLUMN `sa_state`;
-- 5) 유니크 인덱스
ALTER TABLE `sales_agency` ADD UNIQUE KEY `uk_sa_lg_code` (`sa_lg_idx`, `sa_code`);