40 lines
1.5 KiB
MySQL
40 lines
1.5 KiB
MySQL
|
|
-- 기존 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`);
|