求问:多表 sql 并发生成唯一列数值列

57 天前
 furtherRoad

将 oracle 中的 5 个表同步到 mysql 的 1 个表中; mysql 中需要有一个新增字段(pkm)为 bigint 类型; 这 5 个 oracle 表的数据和数据量会实时变化; 无法改变目标数据源 mysql 的表结构; 现在需要使用 oracle 的 select 语句生成一列新的列,方便抽取到 mysql ; 需要生成的列(pkm)必须是唯一值,不能和其他表重复; 每个 select 是并发执行,不是逐个执行。

所以用 ROW_NUMBER()不太合适,如: SELECT

ROW_NUMBER() OVER (ORDER BY id) +

(SELECT COUNT(*) FROM table1) +

...+

(SELECT COUNT(*) FROM table5)

678 次点击
所在节点    问与答
2 条回复
xiaozirun
57 天前
浅见,pkm 列的值可以是:表序号+左补零后的表 id ,这样的话就可以保证 pkm 列的值唯一
haah
56 天前
1. 雪花算法
or
2. uuid to bigint.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1072689

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX