Files
ccdi/sql/migration/2026-05-07-allow-duplicate-staff-recruitment-id.sql

90 lines
3.0 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 招聘信息允许招聘项目编号重复
-- 1. 移除 ccdi_staff_recruitment.recruit_id 唯一索引,保留普通查询索引。
-- 2. ccdi_staff_recruitment_work 增加 recruitment_id改为关联招聘信息自增主键。
SET @schema_name = DATABASE();
SET @drop_unique_sql = (
SELECT IF(
COUNT(1) > 0,
'ALTER TABLE `ccdi_staff_recruitment` DROP INDEX `uk_staff_recruitment_recruit_id`',
'SELECT 1'
)
FROM information_schema.statistics
WHERE table_schema = @schema_name
AND table_name = 'ccdi_staff_recruitment'
AND index_name = 'uk_staff_recruitment_recruit_id'
);
PREPARE stmt FROM @drop_unique_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @add_recruit_id_index_sql = (
SELECT IF(
COUNT(1) = 0,
'ALTER TABLE `ccdi_staff_recruitment` ADD KEY `idx_staff_recruitment_recruit_id` (`recruit_id`)',
'SELECT 1'
)
FROM information_schema.statistics
WHERE table_schema = @schema_name
AND table_name = 'ccdi_staff_recruitment'
AND index_name = 'idx_staff_recruitment_recruit_id'
);
PREPARE stmt FROM @add_recruit_id_index_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @add_work_recruitment_id_sql = (
SELECT IF(
COUNT(1) = 0,
'ALTER TABLE `ccdi_staff_recruitment_work` ADD COLUMN `recruitment_id` BIGINT NULL COMMENT ''关联招聘信息主键ID'' AFTER `id`',
'SELECT 1'
)
FROM information_schema.columns
WHERE table_schema = @schema_name
AND table_name = 'ccdi_staff_recruitment_work'
AND column_name = 'recruitment_id'
);
PREPARE stmt FROM @add_work_recruitment_id_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
UPDATE `ccdi_staff_recruitment_work` w
JOIN `ccdi_staff_recruitment` r
ON w.`recruit_id` COLLATE utf8mb4_general_ci = r.`recruit_id` COLLATE utf8mb4_general_ci
SET w.`recruitment_id` = r.`id`
WHERE w.`recruitment_id` IS NULL;
ALTER TABLE `ccdi_staff_recruitment_work`
MODIFY COLUMN `recruitment_id` BIGINT NOT NULL COMMENT '关联招聘信息主键ID';
SET @add_work_recruitment_id_index_sql = (
SELECT IF(
COUNT(1) = 0,
'ALTER TABLE `ccdi_staff_recruitment_work` ADD KEY `idx_recruitment_id` (`recruitment_id`)',
'SELECT 1'
)
FROM information_schema.statistics
WHERE table_schema = @schema_name
AND table_name = 'ccdi_staff_recruitment_work'
AND index_name = 'idx_recruitment_id'
);
PREPARE stmt FROM @add_work_recruitment_id_index_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @add_work_recruitment_sort_index_sql = (
SELECT IF(
COUNT(1) = 0,
'ALTER TABLE `ccdi_staff_recruitment_work` ADD KEY `idx_recruitment_id_sort_order` (`recruitment_id`, `sort_order`)',
'SELECT 1'
)
FROM information_schema.statistics
WHERE table_schema = @schema_name
AND table_name = 'ccdi_staff_recruitment_work'
AND index_name = 'idx_recruitment_id_sort_order'
);
PREPARE stmt FROM @add_work_recruitment_sort_index_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;