我有一个包含以下列的表
APP_ID(VarChar),USER_ID(VarChar), ROLE_ID(Number),....
app1 user1 3
app1 user2 3
app2 user2 4
app2 user3 3
app3 user1 7
正如您所看到的,没有ID字段,我无法添加它。
如果我使用以下查询,每次使用以下查询时,它都会给我唯一且相同的数字
SELECT owa_opt_lock.checksum(a.APP_ID || a.USER_ID || a.ROLE_ID) as ID
我想知道使用它是安全的。
答案 0 :(得分:3)
没有。你可能会发生碰撞。例如,这两行具有相同的id(app1user212):
app1 user2 12
app1 user21 2
使用分隔符可以很容易地解决这个问题。因此,对于大多数表格,以下情况都可以:
(a.APP_ID || '|' || a.USER_ID || '|' || a.ROLE_ID) as ID
答案 1 :(得分:1)
您可以使用rownum
吗?
UPDATE table
SET table_key = rownum;
答案 2 :(得分:0)
碰撞。
为什么不尝试使用row_number()分析函数。
try adding: row_number() over(order by NULL).
它生成一个唯一的no系列(实际上是行号)