假设myTable中的以下行:
id = 1 letter = 'a'
在Oracle中,可以轻松地执行以下操作:
update myTable set letter = 'b' where id = 1 returning letter into myVariable;
然后myVariable将保持值“ b”。
我正在寻找的是一种返回信的“之前”值的方法
IE。将以前的更新替换为:
update myTable set letter = 'b' where id = 1 returning letter "before the update" into myVariable;
然后myVariable应该保留值“ a”;
我了解T-SQL可以通过OUTPUT子句实现这一目标。
是否有Oracle等效的方法来实现这一目标,所以我不必先进行“选择”就可以获取之前的值吗?
update ( select T.*, (select letter from DUAL) old_letter from myTable T where id=1 ) set letter = 'b' returning old_letter into myVariable;
在Oracle 11.2上测试