009_change_price_id_to_integer.sql 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. -- 迁移文件: 009_change_price_id_to_integer.sql
  2. -- 描述: 将price_id从VARCHAR改为INTEGER类型
  3. -- ============================================
  4. -- 正向迁移
  5. -- ============================================
  6. -- 1. 删除外键约束
  7. ALTER TABLE aigcspace.models DROP CONSTRAINT IF EXISTS fk_models_price_id;
  8. ALTER TABLE aigcspace.model_price_tier DROP CONSTRAINT IF EXISTS fk_price_tier_price_id;
  9. -- 2. 删除唯一约束和索引
  10. ALTER TABLE aigcspace.model_price DROP CONSTRAINT IF EXISTS uk_model_price_price_id;
  11. DROP INDEX IF EXISTS aigcspace.idx_model_price_price_id;
  12. DROP INDEX IF EXISTS aigcspace.idx_models_price_id;
  13. DROP INDEX IF EXISTS aigcspace.idx_price_tier_price_id;
  14. -- 3. 清空数据(重新导入)
  15. TRUNCATE TABLE aigcspace.model_price_tier;
  16. TRUNCATE TABLE aigcspace.model_price CASCADE;
  17. UPDATE aigcspace.models SET price_id = NULL;
  18. -- 4. 修改 model_price.price_id 为 INTEGER
  19. ALTER TABLE aigcspace.model_price DROP COLUMN IF EXISTS price_id;
  20. ALTER TABLE aigcspace.model_price ADD COLUMN price_id INTEGER;
  21. COMMENT ON COLUMN aigcspace.model_price.price_id IS '价格业务ID(数字)';
  22. -- 5. 修改 model_price_tier.price_id 为 INTEGER
  23. ALTER TABLE aigcspace.model_price_tier DROP COLUMN IF EXISTS price_id;
  24. ALTER TABLE aigcspace.model_price_tier ADD COLUMN price_id INTEGER;
  25. COMMENT ON COLUMN aigcspace.model_price_tier.price_id IS '价格业务ID,关联model_price.price_id';
  26. -- 6. 修改 models.price_id 为 INTEGER
  27. ALTER TABLE aigcspace.models DROP COLUMN IF EXISTS price_id;
  28. ALTER TABLE aigcspace.models ADD COLUMN price_id INTEGER;
  29. COMMENT ON COLUMN aigcspace.models.price_id IS '价格业务ID,关联model_price.price_id';
  30. -- 7. 添加唯一约束
  31. ALTER TABLE aigcspace.model_price ADD CONSTRAINT uk_model_price_price_id UNIQUE (price_id);
  32. -- 8. 添加外键约束
  33. ALTER TABLE aigcspace.models ADD CONSTRAINT fk_models_price_id
  34. FOREIGN KEY (price_id) REFERENCES aigcspace.model_price(price_id) ON DELETE SET NULL;
  35. ALTER TABLE aigcspace.model_price_tier ADD CONSTRAINT fk_price_tier_price_id
  36. FOREIGN KEY (price_id) REFERENCES aigcspace.model_price(price_id) ON DELETE CASCADE;
  37. -- 9. 创建索引
  38. CREATE INDEX idx_model_price_price_id ON aigcspace.model_price(price_id);
  39. CREATE INDEX idx_models_price_id ON aigcspace.models(price_id);
  40. CREATE INDEX idx_price_tier_price_id ON aigcspace.model_price_tier(price_id);
  41. -- ============================================
  42. -- 回滚迁移
  43. -- ============================================
  44. -- 略