migrate_wechat_code_to_openid.sql 1.7 KB

1234567891011121314151617181920212223242526272829303132333435
  1. -- 微信用户表字段迁移脚本
  2. -- 将 wechat_code 字段重命名为 openid
  3. -- 注意:执行前请备份数据!
  4. -- 检查表是否存在
  5. DO $$
  6. BEGIN
  7. IF EXISTS (SELECT FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'wechat_users') THEN
  8. -- 检查是否已经有openid字段
  9. IF NOT EXISTS (SELECT FROM information_schema.columns WHERE table_schema = 'public' AND table_name = 'wechat_users' AND column_name = 'openid') THEN
  10. -- 如果存在wechat_code字段,则重命名
  11. IF EXISTS (SELECT FROM information_schema.columns WHERE table_schema = 'public' AND table_name = 'wechat_users' AND column_name = 'wechat_code') THEN
  12. -- 重命名字段
  13. ALTER TABLE public.wechat_users RENAME COLUMN wechat_code TO openid;
  14. -- 更新字段注释
  15. COMMENT ON COLUMN public.wechat_users.openid IS '微信用户openid,唯一标识';
  16. -- 重命名相关索引
  17. IF EXISTS (SELECT FROM pg_class WHERE relname = 'idx_wechat_users_wechat_code') THEN
  18. DROP INDEX IF EXISTS public.idx_wechat_users_wechat_code;
  19. CREATE INDEX idx_wechat_users_openid ON public.wechat_users(openid);
  20. END IF;
  21. RAISE NOTICE '成功将 wechat_code 字段重命名为 openid';
  22. ELSE
  23. RAISE NOTICE 'wechat_code 字段不存在,无需迁移';
  24. END IF;
  25. ELSE
  26. RAISE NOTICE 'openid 字段已存在,无需迁移';
  27. END IF;
  28. ELSE
  29. RAISE NOTICE 'wechat_users 表不存在,请先创建表';
  30. END IF;
  31. END $$;