update
This commit is contained in:
27
db/migrations/2026-09-21-03-ingest-source-idempotency.sql
Normal file
27
db/migrations/2026-09-21-03-ingest-source-idempotency.sql
Normal file
@ -0,0 +1,27 @@
|
||||
-- 2026-09-21-03 来源幂等:两张草稿表新增 source / source_url,并建部分唯一索引。
|
||||
--
|
||||
-- 对应规格:docs/superpowers/specs/2026-09-20-ingest-idempotency-design.md §3.1–3.2
|
||||
--
|
||||
-- 幂等:ADD COLUMN / CREATE INDEX 全带 IF NOT EXISTS,可重复执行。
|
||||
--
|
||||
-- 应用后请重新导出结构:
|
||||
-- ./bin/dbtool dump -clean -out db/backups/db_dump.sql
|
||||
--
|
||||
-- 注意:同规格 §3.6(month 列与「实体键并入 month」)**已作废**——
|
||||
-- 由 docs/superpowers/specs/2026-09-21-duplicate-review-design.md §3.7 取代
|
||||
-- (街拍实体键改为 (source, source_url),不再按月区分)。故本脚本**不建 month 列**。
|
||||
|
||||
-- 用 not null default '' 而不是可空:NULL 在唯一索引里不参与比较,
|
||||
-- 会造成「同键可重复插入」的漏洞。
|
||||
ALTER TABLE brand_runway_drafts ADD COLUMN IF NOT EXISTS source varchar(32) NOT NULL DEFAULT '';
|
||||
ALTER TABLE brand_runway_drafts ADD COLUMN IF NOT EXISTS source_url varchar(512) NOT NULL DEFAULT '';
|
||||
|
||||
ALTER TABLE street_snap_drafts ADD COLUMN IF NOT EXISTS source varchar(32) NOT NULL DEFAULT '';
|
||||
ALTER TABLE street_snap_drafts ADD COLUMN IF NOT EXISTS source_url varchar(512) NOT NULL DEFAULT '';
|
||||
|
||||
-- 两个部分唯一索引(全量唯一索引会因存量大量 ('','') 冲突而建索引失败)。
|
||||
-- 向后兼容:老爬虫不上送 source_url 时该列为空串,自动被索引豁免 —— 行为与改动前一致。
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS uq_br_draft_source
|
||||
ON brand_runway_drafts (source, source_url) WHERE source_url <> '';
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS uq_ss_draft_source
|
||||
ON street_snap_drafts (source, source_url) WHERE source_url <> '';
|
||||
Reference in New Issue
Block a user