fix: V13 idempotent migration (V12 no-op)

This commit is contained in:
pray4skylark
2026-06-02 18:15:21 +09:00
parent d205a447a1
commit adb7de09ef
2 changed files with 55 additions and 41 deletions
@@ -1,41 +1 @@
ALTER TABLE tb_employee ADD COLUMN birth_date DATE;
ALTER TABLE tb_employee ADD COLUMN education VARCHAR(20);
ALTER TABLE tb_employee ADD COLUMN major VARCHAR(100);
ALTER TABLE tb_employee ADD COLUMN graduation_date DATE;
ALTER TABLE tb_employee ADD COLUMN residence VARCHAR(255);
CREATE SEQUENCE sq_employee_emergency_contacts INCREMENT BY 50;
CREATE TABLE tb_employee_emergency_contact (
id BIGSERIAL PRIMARY KEY,
emp_id BIGINT NOT NULL REFERENCES tb_employee(id),
name VARCHAR(100) NOT NULL,
relation VARCHAR(50),
phone VARCHAR(20),
sort_order INTEGER DEFAULT 0,
created_at TIMESTAMP,
updated_at TIMESTAMP,
is_deleted CHAR(1) DEFAULT 'N'
);
CREATE INDEX idx_emergency_contact_emp_id ON tb_employee_emergency_contact(emp_id);
INSERT INTO tb_common_code (id, group_code, code_value, code_name, sort_order, is_active, created_at, updated_at)
SELECT nextval('sq_common_codes'), 'EDUCATION_LEVEL', 'HIGH_SCHOOL', '고졸', 1, 'Y', NOW(), NOW()
WHERE NOT EXISTS (SELECT 1 FROM tb_common_code WHERE group_code = 'EDUCATION_LEVEL' AND code_value = 'HIGH_SCHOOL');
INSERT INTO tb_common_code (id, group_code, code_value, code_name, sort_order, is_active, created_at, updated_at)
SELECT nextval('sq_common_codes'), 'EDUCATION_LEVEL', 'COLLEGE', '전문대', 2, 'Y', NOW(), NOW()
WHERE NOT EXISTS (SELECT 1 FROM tb_common_code WHERE group_code = 'EDUCATION_LEVEL' AND code_value = 'COLLEGE');
INSERT INTO tb_common_code (id, group_code, code_value, code_name, sort_order, is_active, created_at, updated_at)
SELECT nextval('sq_common_codes'), 'EDUCATION_LEVEL', 'BACHELOR', '학사', 3, 'Y', NOW(), NOW()
WHERE NOT EXISTS (SELECT 1 FROM tb_common_code WHERE group_code = 'EDUCATION_LEVEL' AND code_value = 'BACHELOR');
INSERT INTO tb_common_code (id, group_code, code_value, code_name, sort_order, is_active, created_at, updated_at)
SELECT nextval('sq_common_codes'), 'EDUCATION_LEVEL', 'MASTER', '석사', 4, 'Y', NOW(), NOW()
WHERE NOT EXISTS (SELECT 1 FROM tb_common_code WHERE group_code = 'EDUCATION_LEVEL' AND code_value = 'MASTER');
INSERT INTO tb_common_code (id, group_code, code_value, code_name, sort_order, is_active, created_at, updated_at)
SELECT nextval('sq_common_codes'), 'EDUCATION_LEVEL', 'DOCTOR', '박사', 5, 'Y', NOW(), NOW()
WHERE NOT EXISTS (SELECT 1 FROM tb_common_code WHERE group_code = 'EDUCATION_LEVEL' AND code_value = 'DOCTOR');
SELECT 1;
@@ -0,0 +1,54 @@
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'tb_employee' AND column_name = 'birth_date') THEN
ALTER TABLE tb_employee ADD COLUMN birth_date DATE;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'tb_employee' AND column_name = 'education') THEN
ALTER TABLE tb_employee ADD COLUMN education VARCHAR(20);
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'tb_employee' AND column_name = 'major') THEN
ALTER TABLE tb_employee ADD COLUMN major VARCHAR(100);
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'tb_employee' AND column_name = 'graduation_date') THEN
ALTER TABLE tb_employee ADD COLUMN graduation_date DATE;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'tb_employee' AND column_name = 'residence') THEN
ALTER TABLE tb_employee ADD COLUMN residence VARCHAR(255);
END IF;
END $$;
CREATE SEQUENCE IF NOT EXISTS sq_employee_emergency_contacts INCREMENT BY 50;
CREATE TABLE IF NOT EXISTS tb_employee_emergency_contact (
id BIGSERIAL PRIMARY KEY,
emp_id BIGINT NOT NULL REFERENCES tb_employee(id),
name VARCHAR(100) NOT NULL,
relation VARCHAR(50),
phone VARCHAR(20),
sort_order INTEGER DEFAULT 0,
created_at TIMESTAMP,
updated_at TIMESTAMP,
is_deleted CHAR(1) DEFAULT 'N'
);
CREATE INDEX IF NOT EXISTS idx_emergency_contact_emp_id ON tb_employee_emergency_contact(emp_id);
INSERT INTO tb_common_code (id, group_code, code_value, code_name, sort_order, is_active, created_at, updated_at)
SELECT nextval('sq_common_codes'), 'EDUCATION_LEVEL', 'HIGH_SCHOOL', '고졸', 1, 'Y', NOW(), NOW()
WHERE NOT EXISTS (SELECT 1 FROM tb_common_code WHERE group_code = 'EDUCATION_LEVEL' AND code_value = 'HIGH_SCHOOL');
INSERT INTO tb_common_code (id, group_code, code_value, code_name, sort_order, is_active, created_at, updated_at)
SELECT nextval('sq_common_codes'), 'EDUCATION_LEVEL', 'COLLEGE', '전문대', 2, 'Y', NOW(), NOW()
WHERE NOT EXISTS (SELECT 1 FROM tb_common_code WHERE group_code = 'EDUCATION_LEVEL' AND code_value = 'COLLEGE');
INSERT INTO tb_common_code (id, group_code, code_value, code_name, sort_order, is_active, created_at, updated_at)
SELECT nextval('sq_common_codes'), 'EDUCATION_LEVEL', 'BACHELOR', '학사', 3, 'Y', NOW(), NOW()
WHERE NOT EXISTS (SELECT 1 FROM tb_common_code WHERE group_code = 'EDUCATION_LEVEL' AND code_value = 'BACHELOR');
INSERT INTO tb_common_code (id, group_code, code_value, code_name, sort_order, is_active, created_at, updated_at)
SELECT nextval('sq_common_codes'), 'EDUCATION_LEVEL', 'MASTER', '석사', 4, 'Y', NOW(), NOW()
WHERE NOT EXISTS (SELECT 1 FROM tb_common_code WHERE group_code = 'EDUCATION_LEVEL' AND code_value = 'MASTER');
INSERT INTO tb_common_code (id, group_code, code_value, code_name, sort_order, is_active, created_at, updated_at)
SELECT nextval('sq_common_codes'), 'EDUCATION_LEVEL', 'DOCTOR', '박사', 5, 'Y', NOW(), NOW()
WHERE NOT EXISTS (SELECT 1 FROM tb_common_code WHERE group_code = 'EDUCATION_LEVEL' AND code_value = 'DOCTOR');