Oracle SQL更新表逐行

时间:2018-10-22 07:26:43

标签: sql oracle

我正在尝试逐行更新数据库表,为每行增加ID。

来自这样的表格

'\n'

收件人

file.write((' '.join(tmp) + '\n').encode())

有没有比这更快更好的乳清粉?

tmp

我想做的就是简单地分配行ID,而不是使用“ where”子句在每次迭代中检查整个表。

2 个答案:

答案 0 :(得分:2)

只能通过假设表记录中的某些 order 来获得预期输出中的ID值。假设Foo列确定此顺序,您可以使用简单的查询生成所需的输出:

SELECT
    ROW_NUMBER() OVER (ORDER BY Foo) ID,
    Foo,
    Bar
FROM TEMP_FOO_BAR
ORDER BY ID;

此处使用更新的问题在于,一旦向表中添加更多数据,您可能会被迫进行另一次更新。

如果您需要ID像自动增量/标识列一样工作,则将其设置为1,让Oracle担心在添加新数据时保持顺序。

答案 1 :(得分:0)

为什么不删除该列,然后运行一个alter table并添加一个列和一个约束来每次更新该值。