109 lines
5.0 KiB
MySQL
109 lines
5.0 KiB
MySQL
|
|
-- 지정판매소: 앱(DesignatedShopModel / Admin\DesignatedShop)이 기대하는 컬럼을
|
||
|
|
-- 없을 때만 추가합니다. 기존 DB를 login_tables.sql 최신 정의와 맞출 때 사용.
|
||
|
|
-- 실행 예: mysql -h 127.0.0.1 -u USER -p DBNAME < writable/database/designated_shop_ensure_app_columns.sql
|
||
|
|
--
|
||
|
|
-- kr_address 등 외부 테이블 불필요. INFORMATION_SCHEMA 로 존재 여부만 확인합니다.
|
||
|
|
|
||
|
|
SET NAMES utf8mb4;
|
||
|
|
|
||
|
|
SET @db = DATABASE();
|
||
|
|
|
||
|
|
-- ds_biz_type
|
||
|
|
SET @s = (SELECT IF(
|
||
|
|
(SELECT COUNT(*) FROM information_schema.COLUMNS
|
||
|
|
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'designated_shop' AND COLUMN_NAME = 'ds_biz_type') > 0,
|
||
|
|
'SELECT 1',
|
||
|
|
'ALTER TABLE `designated_shop` ADD COLUMN `ds_biz_type` VARCHAR(100) NOT NULL DEFAULT '''' COMMENT ''업태'' AFTER `ds_rep_name`'
|
||
|
|
));
|
||
|
|
PREPARE stmt FROM @s; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
|
|
||
|
|
-- ds_biz_kind
|
||
|
|
SET @s = (SELECT IF(
|
||
|
|
(SELECT COUNT(*) FROM information_schema.COLUMNS
|
||
|
|
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'designated_shop' AND COLUMN_NAME = 'ds_biz_kind') > 0,
|
||
|
|
'SELECT 1',
|
||
|
|
'ALTER TABLE `designated_shop` ADD COLUMN `ds_biz_kind` VARCHAR(100) NOT NULL DEFAULT '''' COMMENT ''업종'' AFTER `ds_biz_type`'
|
||
|
|
));
|
||
|
|
PREPARE stmt FROM @s; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
|
|
||
|
|
-- ds_va_bank (ds_va_number 뒤 — 없으면 ds_biz_kind 뒤에 붙임)
|
||
|
|
SET @s = (SELECT IF(
|
||
|
|
(SELECT COUNT(*) FROM information_schema.COLUMNS
|
||
|
|
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'designated_shop' AND COLUMN_NAME = 'ds_va_bank') > 0,
|
||
|
|
'SELECT 1',
|
||
|
|
IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'designated_shop' AND COLUMN_NAME = 'ds_va_number') > 0,
|
||
|
|
'ALTER TABLE `designated_shop` ADD COLUMN `ds_va_bank` VARCHAR(80) NOT NULL DEFAULT '''' COMMENT ''가상계좌(은행)'' AFTER `ds_va_number`',
|
||
|
|
'ALTER TABLE `designated_shop` ADD COLUMN `ds_va_bank` VARCHAR(80) NOT NULL DEFAULT '''' COMMENT ''가상계좌(은행)'' AFTER `ds_biz_kind`'
|
||
|
|
)
|
||
|
|
));
|
||
|
|
PREPARE stmt FROM @s; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
|
|
||
|
|
-- ds_va_account
|
||
|
|
SET @s = (SELECT IF(
|
||
|
|
(SELECT COUNT(*) FROM information_schema.COLUMNS
|
||
|
|
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'designated_shop' AND COLUMN_NAME = 'ds_va_account') > 0,
|
||
|
|
'SELECT 1',
|
||
|
|
'ALTER TABLE `designated_shop` ADD COLUMN `ds_va_account` VARCHAR(50) NOT NULL DEFAULT '''' COMMENT ''계좌번호'' AFTER `ds_va_bank`'
|
||
|
|
));
|
||
|
|
PREPARE stmt FROM @s; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
|
|
||
|
|
-- ds_addr_detail
|
||
|
|
SET @s = (SELECT IF(
|
||
|
|
(SELECT COUNT(*) FROM information_schema.COLUMNS
|
||
|
|
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'designated_shop' AND COLUMN_NAME = 'ds_addr_detail') > 0,
|
||
|
|
'SELECT 1',
|
||
|
|
'ALTER TABLE `designated_shop` ADD COLUMN `ds_addr_detail` VARCHAR(200) NOT NULL DEFAULT '''' COMMENT ''상세주소(동·호 등)'' AFTER `ds_addr_jibun`'
|
||
|
|
));
|
||
|
|
PREPARE stmt FROM @s; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
|
|
||
|
|
-- ds_zone_code
|
||
|
|
SET @s = (SELECT IF(
|
||
|
|
(SELECT COUNT(*) FROM information_schema.COLUMNS
|
||
|
|
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'designated_shop' AND COLUMN_NAME = 'ds_zone_code') > 0,
|
||
|
|
'SELECT 1',
|
||
|
|
'ALTER TABLE `designated_shop` ADD COLUMN `ds_zone_code` VARCHAR(80) NOT NULL DEFAULT '''' COMMENT ''구역'' AFTER `ds_gugun_code`'
|
||
|
|
));
|
||
|
|
PREPARE stmt FROM @s; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
|
|
||
|
|
-- ds_branch_no
|
||
|
|
SET @s = (SELECT IF(
|
||
|
|
(SELECT COUNT(*) FROM information_schema.COLUMNS
|
||
|
|
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'designated_shop' AND COLUMN_NAME = 'ds_branch_no') > 0,
|
||
|
|
'SELECT 1',
|
||
|
|
'ALTER TABLE `designated_shop` ADD COLUMN `ds_branch_no` VARCHAR(50) NOT NULL DEFAULT '''' COMMENT ''종사업장번호'' AFTER `ds_zone_code`'
|
||
|
|
));
|
||
|
|
PREPARE stmt FROM @s; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
|
|
||
|
|
-- ds_state_changed_at
|
||
|
|
SET @s = (SELECT IF(
|
||
|
|
(SELECT COUNT(*) FROM information_schema.COLUMNS
|
||
|
|
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'designated_shop' AND COLUMN_NAME = 'ds_state_changed_at') > 0,
|
||
|
|
'SELECT 1',
|
||
|
|
'ALTER TABLE `designated_shop` ADD COLUMN `ds_state_changed_at` DATE NULL DEFAULT NULL COMMENT ''변경일자'' AFTER `ds_state`'
|
||
|
|
));
|
||
|
|
PREPARE stmt FROM @s; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
|
|
||
|
|
-- ds_change_reason
|
||
|
|
SET @s = (SELECT IF(
|
||
|
|
(SELECT COUNT(*) FROM information_schema.COLUMNS
|
||
|
|
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'designated_shop' AND COLUMN_NAME = 'ds_change_reason') > 0,
|
||
|
|
'SELECT 1',
|
||
|
|
'ALTER TABLE `designated_shop` ADD COLUMN `ds_change_reason` VARCHAR(500) NOT NULL DEFAULT '''' COMMENT ''변경사유'' AFTER `ds_state_changed_at`'
|
||
|
|
));
|
||
|
|
PREPARE stmt FROM @s; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
|
|
||
|
|
-- ds_va_number 뒤에 va_bank를 넣었을 수 있음 — 구 스키마에 ds_designated_at 등만 있는 경우
|
||
|
|
UPDATE `designated_shop`
|
||
|
|
SET `ds_va_account` = `ds_va_number`
|
||
|
|
WHERE EXISTS (
|
||
|
|
SELECT 1 FROM information_schema.COLUMNS
|
||
|
|
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'designated_shop' AND COLUMN_NAME = 'ds_va_account'
|
||
|
|
)
|
||
|
|
AND EXISTS (
|
||
|
|
SELECT 1 FROM information_schema.COLUMNS
|
||
|
|
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'designated_shop' AND COLUMN_NAME = 'ds_va_number'
|
||
|
|
)
|
||
|
|
AND (`ds_va_account` = '' OR `ds_va_account` IS NULL)
|
||
|
|
AND `ds_va_number` IS NOT NULL
|
||
|
|
AND `ds_va_number` != '';
|