我希望更新表格中的所有值,但这可能会导致我的数据库被删除
UPDATE Table_1
SET Value = 'Some string with but changed'
where value = 'Some string without changes';
我是否可以通过程序执行此操作,并确保它不会在无限期内执行请我提供一些提示?
修改
我读过有关游标的内容,但我怎样才能使用游标
答案 0 :(得分:2)
您的SQL似乎很好,这是首选的解决方案。光标通常会慢得多。
如果您无法创建索引并且上面的更新确实很慢,请尝试以下操作。考虑到我没有其余的表定义可供使用,我假设您的主键是一个名为ID的单个字段:
首先,创建一个只包含匹配记录的临时表:
CREATE TEMPORARY TABLE temp as
SELECT *
FROM Table_1
WHERE value = 'Some string without changes';
然后,使用此临时表进行更新:
UPDATE Table_1 SET
Table_1.Value = 'Some string with but changed'
WHERE EXISTS (
SELECT *
FROM Temp
WHERE Temp.ID = Table_1.ID
);
答案 1 :(得分:0)
如果您的数据库高于11g R1版本,则采用另一种方法。 Oracle提供了一个名为DBMS_PARALLEL_EXECUTE的漂亮软件包,它用于大型DMLS或任何可以拆分成块的进程,并且可以并行完成。