43 lines
1.2 KiB
SQL
43 lines
1.2 KiB
SQL
-- 展位重构迁移:从 6 槽位缩减为 2 槽位
|
||
-- 执行时间:2026-05-20
|
||
-- 执行人:待填写
|
||
-- 风险等级:高(删除数据)
|
||
|
||
-- ========== 备份(建议执行前手动备份)==========
|
||
-- 备份 booth_slots 表
|
||
-- CREATE TABLE booth_slots_backup_20260520 AS SELECT * FROM booth_slots;
|
||
|
||
-- 备份 exhibitions 表
|
||
-- CREATE TABLE exhibitions_backup_20260520 AS SELECT * FROM exhibitions;
|
||
|
||
-- ========== 迁移开始 ==========
|
||
|
||
-- 1. 先删除 slot_index > 2 的展览记录(引用完整性)
|
||
DELETE FROM exhibitions
|
||
WHERE slot_id IN (
|
||
SELECT slot_id FROM booth_slots
|
||
WHERE slot_index > 2
|
||
);
|
||
|
||
-- 2. 删除 slot_index > 2 的槽位记录
|
||
DELETE FROM booth_slots
|
||
WHERE slot_index > 2;
|
||
|
||
-- 3. 验证清理结果
|
||
SELECT user_id, star_id, COUNT(*) as slot_count
|
||
FROM booth_slots
|
||
GROUP BY user_id, star_id
|
||
HAVING COUNT(*) > 2;
|
||
|
||
-- 应该返回空结果,表示每个用户的每个明星展馆最多只有 2 个槽位
|
||
|
||
-- 4. 验证 exhibitions 没有残留(检查是否有关联到已删除槽位的展览)
|
||
SELECT COUNT(*) as orphaned_exhibitions
|
||
FROM exhibitions e
|
||
WHERE NOT EXISTS (
|
||
SELECT 1 FROM booth_slots bs WHERE bs.slot_id = e.slot_id
|
||
);
|
||
|
||
-- 应该返回 0
|
||
|
||
-- ========== 迁移完成 ========== |