【发布时间】:2019-08-05 17:24:55
【问题描述】:
我正在尝试在 oracle sql 中创建一个过程,以便对一个表进行多次更新。对于不同的值,我有大约 500 次更新,但我只更改一列是唯一的,它的任务是对行进行编号。所以我想将数字 20 更改为 21,依此类推,直到数字 120。所以最后数字 20 将是空的,我将有 121 行。
我创建了这个循环,但我不断收到错误“违反唯一约束”,所以我认为我的迭代不起作用。
declare
n integer := 20;
BEGIN
FOR x in 20..120 LOOP
Update my_table
SET number_of_field = n WHERE number_of_field > 20;
n:= n + 1;
END LOOP;
END;
我非常感谢帮助,因为这是我第一次在 SQL 中使用过程,我会觉得我已经接近解决方案了。 谢谢!
【问题讨论】:
-
如果你想将 1 添加到行的子集,并且你可以控制行重新编号的顺序,我会从 120 开始下降到 20。这样我永远不会产生重复的行号。