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