fix(publish): 迁移03街拍体检同步 city+year+title 口径,补 04 体检与查重口径测试
This commit is contained in:
@ -20,10 +20,12 @@ BEGIN
|
||||
RAISE EXCEPTION 'brand_runways 有 % 组重复实体键,请先人工合并再加唯一索引', dup;
|
||||
END IF;
|
||||
|
||||
-- 口径已随任务 3c 的实体键细化同步为 (city, year, title):否则本文件在「同城同年多专题」
|
||||
-- 的合法数据上不再幂等(重复执行会误报重复而中止)。
|
||||
SELECT count(*) INTO dup FROM (
|
||||
SELECT city, year
|
||||
SELECT city, year, COALESCE(title, '')
|
||||
FROM street_snaps WHERE is_deleted = 0
|
||||
GROUP BY 1, 2 HAVING count(*) > 1
|
||||
GROUP BY 1, 2, 3 HAVING count(*) > 1
|
||||
) t;
|
||||
IF dup > 0 THEN
|
||||
RAISE EXCEPTION 'street_snaps 有 % 组重复实体键,请先人工合并再加唯一索引', dup;
|
||||
|
||||
@ -6,6 +6,22 @@
|
||||
-- COALESCE(title, '') 是刻意的:唯一索引中 NULL 互不冲突,若直接用 title,
|
||||
-- 两条 title 为 NULL 的行会被判为不同实体而共存。入库始终会写 title,
|
||||
-- 这里只是把「NULL 也要参与唯一性」这件事钉死。
|
||||
|
||||
-- 建索引前先体检(与 03 同一口径 (city, year, COALESCE(title, ''))):
|
||||
-- 直接建索引只会抛原生 23505,这里先给出可读的报错原因。
|
||||
DO $$
|
||||
DECLARE dup int;
|
||||
BEGIN
|
||||
SELECT count(*) INTO dup FROM (
|
||||
SELECT city, year, COALESCE(title, '')
|
||||
FROM street_snaps WHERE is_deleted = 0
|
||||
GROUP BY 1, 2, 3 HAVING count(*) > 1
|
||||
) t;
|
||||
IF dup > 0 THEN
|
||||
RAISE EXCEPTION 'street_snaps 有 % 组重复实体键,请先人工合并再加唯一索引', dup;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
DROP INDEX IF EXISTS uq_ss_entity;
|
||||
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS uq_ss_entity
|
||||
|
||||
Reference in New Issue
Block a user