-- ============================================================
-- 002b_migrate_episode_number.sql
-- 迁移脚本：在 002a 诊断确认安全后执行
-- 执行方式: psql -U postgres -d milsci_dev -f sql/002b_migrate_episode_number.sql
-- 前置条件：先设 $env:PGCLIENTENCODING="UTF8"
-- 注意：已改用 date_part('year', air_date) 替代 EXTRACT(... )::int 避免语法错误
-- ============================================================

-- 1. 删全局 UNIQUE 约束（幂等：constraint 已删则报 warning，正常）
ALTER TABLE episodes DROP CONSTRAINT episodes_episode_number_key;

-- 2. 建按年复合唯一索引（重播行 original_episode_id IS NOT NULL 不参与）
CREATE UNIQUE INDEX idx_episodes_year_number
  ON episodes (date_part('year', air_date), episode_number)
  WHERE original_episode_id IS NULL;

-- 验证：确认索引生效
-- \d episodes