-- ============================================================ -- 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