016_model_api_key_refactor.sql 793 B

123456789101112131415161718
  1. -- Migration 016: 将 models.api_key 从存储实际 key 值改为存储 api_keys.id
  2. SET search_path TO crawl;
  3. -- 1. 添加新列 api_key_id
  4. ALTER TABLE models ADD COLUMN IF NOT EXISTS api_key_id BIGINT;
  5. -- 2. 尝试迁移现有数据(如果 api_key 值能匹配到 api_keys.key_value,则填充 api_key_id)
  6. UPDATE models m
  7. SET api_key_id = (SELECT id FROM api_keys WHERE key_value = m.api_key LIMIT 1)
  8. WHERE m.api_key IS NOT NULL;
  9. -- 3. 删除旧列 api_key
  10. ALTER TABLE models DROP COLUMN IF EXISTS api_key;
  11. -- 4. 添加外键约束(可选,如果需要严格约束)
  12. -- ALTER TABLE models ADD CONSTRAINT fk_models_api_key FOREIGN KEY (api_key_id) REFERENCES api_keys(id) ON DELETE SET NULL;
  13. COMMENT ON COLUMN models.api_key_id IS '关联的 API Key ID,NULL 表示未绑定';