diff --git a/sql/migrate-k114-thumbnail-partial-index.sql b/sql/migrate-k114-thumbnail-partial-index.sql new file mode 100644 index 0000000..c9faccc --- /dev/null +++ b/sql/migrate-k114-thumbnail-partial-index.sql @@ -0,0 +1,7 @@ +-- 缩略图时间轴唯一约束改为部分索引: +-- media_thumbnail.deleted 为 @TableLogic 逻辑删除,软删行仍占用 episode_id 会导致 +-- ThumbnailRecordService.upsert 的 delete+insert 触发 uk_media_thumbnail_episode 冲突。 +-- 唯一性只约束未删除行(deleted = 0)。 +DROP INDEX IF EXISTS uk_media_thumbnail_episode; +CREATE UNIQUE INDEX IF NOT EXISTS uk_media_thumbnail_episode + ON media_thumbnail (episode_id) WHERE deleted = 0; diff --git a/sql/schema-phase1.sql b/sql/schema-phase1.sql index c41f4fd..caac683 100644 --- a/sql/schema-phase1.sql +++ b/sql/schema-phase1.sql @@ -806,7 +806,7 @@ CREATE TABLE IF NOT EXISTS media_thumbnail ( deleted SMALLINT NOT NULL DEFAULT 0 ); CREATE UNIQUE INDEX IF NOT EXISTS uk_media_thumbnail_episode - ON media_thumbnail (episode_id); + ON media_thumbnail (episode_id) WHERE deleted = 0; CREATE INDEX IF NOT EXISTS idx_media_thumbnail_drama ON media_thumbnail (drama_id); COMMENT ON TABLE media_thumbnail IS '单集缩略图雪碧图与 VTT 时间轴';