当数据值相同时,Oracle是否更新列?

时间:2013-12-19 22:20:23

标签: oracle sql-update

如果我有一个名为NAME的列,其值为“CLARK”并且我运行更新语句

update table1 set name = 'CLARK';

Oracle是否实际更新了列,还是忽略了update命令,因为值相同?

我发现了这个问题(Oracle, how update statement works),第一个答案暗示即使值相等也会发生更新。我也在SQL Developer中试过它并且它已经运行但我不知道是否真的发生了更新。

提前致谢。

2 个答案:

答案 0 :(得分:4)

是的,Oracle确实更新了该列,即使它是相同的。

在一个非常简单的例子中,这没什么区别。但请考虑以下因素: -

  • 更新记录时,会在该记录上获取更新会话的锁
  • 更新记录时,表格上的触发器将会触发

此更新的这些方面表明该列实际上已更新。

当然,也许在值相同时会有一些优化,但作为Oracle的用户,这些都是不可见的。

答案 1 :(得分:2)

是的,即使实际值没有改变,所有行都会更新并触发所有触发器。