Initial commit of akmon project
This commit is contained in:
84
quick_fix_functions.sql
Normal file
84
quick_fix_functions.sql
Normal file
@@ -0,0 +1,84 @@
|
||||
-- =====================================================
|
||||
-- 快速修复函数冲突
|
||||
-- 解决 "cannot change name of input parameter" 错误
|
||||
-- =====================================================
|
||||
|
||||
-- 删除所有可能冲突的函数
|
||||
DO $$
|
||||
BEGIN
|
||||
RAISE NOTICE '🧹 删除可能冲突的函数';
|
||||
|
||||
-- 删除角色管理相关函数(按依赖顺序)
|
||||
DROP FUNCTION IF EXISTS public.batch_update_user_roles(JSONB, UUID) CASCADE;
|
||||
DROP FUNCTION IF EXISTS public.batch_update_user_roles(JSONB) CASCADE;
|
||||
DROP FUNCTION IF EXISTS public.update_user_role(UUID, TEXT, UUID) CASCADE;
|
||||
DROP FUNCTION IF EXISTS public.update_user_role(UUID, TEXT) CASCADE;
|
||||
DROP FUNCTION IF EXISTS public.get_user_role(UUID) CASCADE;
|
||||
DROP FUNCTION IF EXISTS public.get_user_role() CASCADE;
|
||||
|
||||
-- 删除辅助函数
|
||||
DROP FUNCTION IF EXISTS public.sync_user_role_metadata(UUID) CASCADE;
|
||||
DROP FUNCTION IF EXISTS public.user_has_permission(TEXT, UUID) CASCADE;
|
||||
DROP FUNCTION IF EXISTS public.can_access_resource(TEXT, UUID, TEXT, UUID) CASCADE;
|
||||
|
||||
-- 删除触发器函数
|
||||
DROP FUNCTION IF EXISTS public.update_user_roles_updated_at() CASCADE;
|
||||
DROP FUNCTION IF EXISTS public.handle_new_user() CASCADE;
|
||||
|
||||
-- 删除测试函数
|
||||
DROP FUNCTION IF EXISTS public.test_message_permissions(UUID) CASCADE;
|
||||
DROP FUNCTION IF EXISTS public.test_deployment() CASCADE;
|
||||
|
||||
RAISE NOTICE '✅ 函数清理完成';
|
||||
END $$;
|
||||
|
||||
-- 删除触发器(函数删除后触发器会自动删除,但为了确保)
|
||||
DO $$
|
||||
BEGIN
|
||||
RAISE NOTICE '🧹 删除触发器';
|
||||
|
||||
DROP TRIGGER IF EXISTS trigger_update_user_roles_updated_at ON public.user_roles CASCADE;
|
||||
DROP TRIGGER IF EXISTS on_auth_user_created ON auth.users CASCADE;
|
||||
|
||||
RAISE NOTICE '✅ 触发器清理完成';
|
||||
END $$;
|
||||
|
||||
-- 验证清理结果
|
||||
DO $$
|
||||
DECLARE
|
||||
function_count INTEGER;
|
||||
trigger_count INTEGER;
|
||||
BEGIN
|
||||
RAISE NOTICE '🔍 验证清理结果';
|
||||
|
||||
-- 检查剩余函数
|
||||
SELECT COUNT(*) INTO function_count
|
||||
FROM information_schema.routines
|
||||
WHERE routine_schema = 'public'
|
||||
AND routine_name IN (
|
||||
'get_user_role', 'update_user_role', 'batch_update_user_roles',
|
||||
'handle_new_user', 'update_user_roles_updated_at',
|
||||
'sync_user_role_metadata', 'user_has_permission'
|
||||
);
|
||||
|
||||
-- 检查剩余触发器
|
||||
SELECT COUNT(*) INTO trigger_count
|
||||
FROM information_schema.triggers
|
||||
WHERE trigger_schema = 'public'
|
||||
AND trigger_name IN ('trigger_update_user_roles_updated_at', 'on_auth_user_created');
|
||||
|
||||
RAISE NOTICE '📊 清理统计:';
|
||||
RAISE NOTICE ' - 剩余相关函数: %', function_count;
|
||||
RAISE NOTICE ' - 剩余相关触发器: %', trigger_count;
|
||||
|
||||
IF function_count = 0 AND trigger_count = 0 THEN
|
||||
RAISE NOTICE '🎉 函数清理成功!可以安全地重新创建函数';
|
||||
ELSE
|
||||
RAISE NOTICE '⚠️ 仍有函数或触发器存在,可能需要手动检查';
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- 完成消息
|
||||
SELECT
|
||||
'✅ 函数冲突已解决' as status,
|
||||
'现在可以重新运行您的SQL脚本' as message;
|
||||
Reference in New Issue
Block a user