假设myTable中的以下行:
id = 1 letter = 'a'
在Oracle中,可以轻松地执行以下操作:
update myTable set letter = 'b' where id = 1 returning letter into myVariable;
然后myVariable将保存值“b”.
我正在寻找的是一些返回信件的“之前”值的方法
即.将以前的更新替换为:
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测试