| 标志 | is_current 0/1 |
|---|---|
| 约束 | 每自然键至多一条 1 |
| 验数 | 定期校验唯一性 |
当前行唯一性校验
当前行唯一性校验
SELECT user_id, COUNT(1) c FROM dim_user
WHERE is_current = 1 GROUP BY user_id HAVING c > 1;关闭旧行与插入新行要在同一事务完成,否则出现零条或两条当前行。
用 is_current 或远期 end_date 标识当前行;查询最新维度先过滤当前标志,避免按自然键 group by 取最大版本的昂贵写法。
| 标志 | is_current 0/1 |
|---|---|
| 约束 | 每自然键至多一条 1 |
| 验数 | 定期校验唯一性 |
SELECT user_id, COUNT(1) c FROM dim_user
WHERE is_current = 1 GROUP BY user_id HAVING c > 1;