From 9439c72d309780b64fd16fcac2c446f1f063d3d2 Mon Sep 17 00:00:00 2001 From: simonkoson <28867558@qq.com> Date: Fri, 15 May 2026 13:37:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20002b=20=E6=94=B9=E7=94=A8=20date=5Fpart?= =?UTF-8?q?=20=E4=BF=AE=E5=A4=8D=E8=A1=A8=E8=BE=BE=E5=BC=8F=E7=B4=A2?= =?UTF-8?q?=E5=BC=95=E8=AF=AD=E6=B3=95=EF=BC=8C002c=20=E8=A1=A5=E6=95=91?= =?UTF-8?q?=E4=B8=93=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/sql/002b_migrate_episode_number.sql | 18 ++++++++++++++++++ backend/sql/002c_recreate_index_only.sql | 10 ++++++++++ 2 files changed, 28 insertions(+) create mode 100644 backend/sql/002b_migrate_episode_number.sql create mode 100644 backend/sql/002c_recreate_index_only.sql diff --git a/backend/sql/002b_migrate_episode_number.sql b/backend/sql/002b_migrate_episode_number.sql new file mode 100644 index 0000000..0a69304 --- /dev/null +++ b/backend/sql/002b_migrate_episode_number.sql @@ -0,0 +1,18 @@ +-- ============================================================ +-- 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 \ No newline at end of file diff --git a/backend/sql/002c_recreate_index_only.sql b/backend/sql/002c_recreate_index_only.sql new file mode 100644 index 0000000..7d5db10 --- /dev/null +++ b/backend/sql/002c_recreate_index_only.sql @@ -0,0 +1,10 @@ +-- ============================================================ +-- 002c_recreate_index_only.sql +-- 002b 跑半截翻车后补救:只执行 CREATE INDEX,不要再 DROP CONSTRAINT +-- 执行方式: psql -U postgres -d milsci_dev -f sql/002c_recreate_index_only.sql +-- 前置条件:先设 $env:PGCLIENTENCODING="UTF8" +-- ============================================================ + +CREATE UNIQUE INDEX idx_episodes_year_number + ON episodes (date_part('year', air_date), episode_number) + WHERE original_episode_id IS NULL; \ No newline at end of file