Initial commit of akmon project
This commit is contained in:
132
cleanup_new_config_tables.sql
Normal file
132
cleanup_new_config_tables.sql
Normal file
@@ -0,0 +1,132 @@
|
||||
-- ===================================================================
|
||||
-- 清理脚本:删除新设计的全局配置表
|
||||
-- 保留原有的 ak_global_config 表(单表设计)
|
||||
-- ===================================================================
|
||||
|
||||
-- 注意:执行前请确保已备份重要数据!
|
||||
|
||||
-- 1. 删除函数(按依赖顺序)
|
||||
DROP FUNCTION IF EXISTS public.get_configs_by_language(VARCHAR);
|
||||
DROP FUNCTION IF EXISTS public.get_config_by_language(VARCHAR);
|
||||
DROP FUNCTION IF EXISTS public.get_config_value(VARCHAR, VARCHAR);
|
||||
DROP FUNCTION IF EXISTS public.get_hot_searches(VARCHAR);
|
||||
|
||||
-- 2. 删除视图
|
||||
DROP VIEW IF EXISTS public.vw_global_config_multilingual;
|
||||
|
||||
-- 3. 删除触发器
|
||||
DROP TRIGGER IF EXISTS update_ak_global_config_updated_at ON public.ak_global_config;
|
||||
DROP TRIGGER IF EXISTS update_ak_global_config_translations_updated_at ON public.ak_global_config_translations;
|
||||
|
||||
-- 4. 删除翻译表(有外键约束,先删除)
|
||||
DROP TABLE IF EXISTS public.ak_global_config_translations CASCADE;
|
||||
|
||||
-- 5. 删除新设计的主配置表
|
||||
-- 注意:确保只删除新设计的表,保留原有的单表设计
|
||||
DROP TABLE IF EXISTS public.ak_global_configs CASCADE;
|
||||
|
||||
-- 6. 删除语言表(如果是新创建的)
|
||||
-- 注意:保留现有的 ak_languages 表,因为它与 ak_contents 系统有关联
|
||||
-- DROP TABLE IF EXISTS public.ak_languages CASCADE;
|
||||
|
||||
-- 7. 强制删除可能存在的其他新设计表
|
||||
DROP TABLE IF EXISTS public.ak_config_main CASCADE;
|
||||
DROP TABLE IF EXISTS public.ak_config_translations CASCADE;
|
||||
|
||||
-- 8. 删除相关索引(如果表还存在的话,索引会自动删除)
|
||||
-- 这些索引可能在删除表时已经自动删除了
|
||||
|
||||
-- 8. 验证清理结果
|
||||
DO $$
|
||||
DECLARE
|
||||
table_count INTEGER;
|
||||
function_count INTEGER;
|
||||
view_count INTEGER;
|
||||
BEGIN
|
||||
-- 检查表是否还存在(排除现有的 ak_languages 表)
|
||||
SELECT COUNT(*) INTO table_count
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema = 'public'
|
||||
AND table_name IN ('ak_global_config_translations', 'ak_global_configs');
|
||||
|
||||
-- 检查函数是否还存在
|
||||
SELECT COUNT(*) INTO function_count
|
||||
FROM information_schema.routines
|
||||
WHERE routine_schema = 'public'
|
||||
AND routine_name IN ('get_configs_by_language', 'get_config_by_language', 'get_config_value', 'get_hot_searches');
|
||||
|
||||
-- 检查视图是否还存在
|
||||
SELECT COUNT(*) INTO view_count
|
||||
FROM information_schema.views
|
||||
WHERE table_schema = 'public'
|
||||
AND table_name = 'vw_global_config_multilingual';
|
||||
|
||||
RAISE NOTICE '========================================';
|
||||
RAISE NOTICE '清理结果检查:';
|
||||
RAISE NOTICE '剩余相关表数量: %', table_count;
|
||||
RAISE NOTICE '剩余相关函数数量: %', function_count;
|
||||
RAISE NOTICE '剩余相关视图数量: %', view_count;
|
||||
|
||||
IF table_count = 0 AND function_count = 0 AND view_count = 0 THEN
|
||||
RAISE NOTICE '✅ 清理完成!新设计的表结构已完全删除';
|
||||
ELSE
|
||||
RAISE NOTICE '⚠️ 还有一些对象未删除,请检查';
|
||||
END IF;
|
||||
|
||||
RAISE NOTICE '========================================';
|
||||
END $$;
|
||||
|
||||
-- 9. 检查原有表是否还存在
|
||||
DO $$
|
||||
DECLARE
|
||||
original_table_exists BOOLEAN;
|
||||
BEGIN
|
||||
SELECT EXISTS (
|
||||
SELECT 1 FROM information_schema.tables
|
||||
WHERE table_schema = 'public'
|
||||
AND table_name = 'ak_global_config'
|
||||
AND table_type = 'BASE TABLE'
|
||||
) INTO original_table_exists;
|
||||
|
||||
IF original_table_exists THEN
|
||||
RAISE NOTICE '✅ 原有的 ak_global_config 表仍然存在,可以继续使用';
|
||||
|
||||
-- 显示原有表的基本信息
|
||||
RAISE NOTICE '原有表的配置数量: %', (
|
||||
SELECT COUNT(*) FROM public.ak_global_config WHERE is_active = true
|
||||
);
|
||||
ELSE
|
||||
RAISE NOTICE '❌ 警告:原有的 ak_global_config 表不存在!';
|
||||
RAISE NOTICE '如果您不小心删除了原有表,请从备份恢复';
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- 10. 可选:重新创建 update_updated_at_column 函数(如果被删除了)
|
||||
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
NEW.updated_at = NOW();
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ language 'plpgsql';
|
||||
|
||||
-- 11. 可选:重新为原有表创建触发器(如果被删除了)
|
||||
DROP TRIGGER IF EXISTS update_ak_global_config_updated_at ON public.ak_global_config;
|
||||
CREATE TRIGGER update_ak_global_config_updated_at
|
||||
BEFORE UPDATE ON public.ak_global_config
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION update_updated_at_column();
|
||||
|
||||
-- 完成提示
|
||||
DO $$
|
||||
BEGIN
|
||||
RAISE NOTICE '========================================';
|
||||
RAISE NOTICE '清理脚本执行完成!';
|
||||
RAISE NOTICE '========================================';
|
||||
RAISE NOTICE '后续步骤:';
|
||||
RAISE NOTICE '1. 确认原有的 ak_global_config 表正常工作';
|
||||
RAISE NOTICE '2. 执行 optimize_existing_global_config.sql 优化现有表的查询';
|
||||
RAISE NOTICE '3. 更新前端代码使用优化后的查询函数';
|
||||
RAISE NOTICE '4. 测试配置系统功能是否正常';
|
||||
RAISE NOTICE '========================================';
|
||||
END $$;
|
||||
Reference in New Issue
Block a user