当数据值相同时,Oracle 会更新列吗?

Big*_*ish 3 oracle sql-update

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

update table1 set name = 'CLARK';
Run Code Online (Sandbox Code Playgroud)

Oracle 是否真的更新了该列,还是因为值相同而忽略了更新命令?

我发现了这个问题(Oracle,更新语句如何工作),第一个答案暗示即使值相等也会发生更新。我也在 SQL Developer 中尝试过,它运行了,但我不知道是否真的发生了更新。

提前致谢。

WW.*_*WW. 5

是的,即使列相同,Oracle 也会更新列。

在一个非常简单的例子中,这没有区别。但请考虑以下几点:-

  • 更新记录时,会为更新会话获取对该记录的锁定,
  • 当记录更新时,表上的触发器将触发

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

当然,在数值相同的情况下,也许会有一些优化,但这些对你作为 Oracle 用户来说是看不到的。