我正在尝试逐行更新数据库表,为每行增加ID。
来自这样的表格
'\n'
收件人
file.write((' '.join(tmp) + '\n').encode())
有没有比这更快更好的乳清粉?
tmp
我想做的就是简单地分配行ID,而不是使用“ where”子句在每次迭代中检查整个表。
答案 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并添加一个列和一个约束来每次更新该值。