问题1
谁能告诉我以下两个更新语句之间是否有任何区别:
UPDATE TABA SET COL1 = '123', COL2 = '456' WHERE TABA.PK = 1
UPDATE TABA SET COL1 = '123' WHERE TABA.PK = 1
其中 COL2 的原始值 = '456'
这对 UNDO 有何影响?
问题 2 如果我使用 ROWTYPE 更新表 TABA 中的记录(如以下代码片段所示)会怎么样? 性能如何?它如何影响 UNDO?
SampleRT TABA%rowtype
SELECT * INTO SampleRT FROM TABA WHERE PK = 1;
SampleRT.COL2 = '111';
UPDATE TABA SET ROW = SampleRT WHERE PK = SampleRT.PK;
谢谢
最佳答案
您的问题 1 是询问当您对行运行 UPDATE 但实际上并未更改值时是否会生成 UNDO(和 REDO)吗?
类似的东西?
update taba set col2='456' where col2='456';
如果这是问题所在,那么答案是,即使您将列更新为相同的值,也会生成 UNDO(和 REDO)。
(异常(exception)情况是当您将 NULL
列更新为 NULL
时 - 这不会生成任何 REDO)。
关于performance - Oracle,更新语句如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1670842/