Oracle SQL – 可以返回列值的“before”状态

前端之家收集整理的这篇文章主要介绍了Oracle SQL – 可以返回列值的“before”状态前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设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测试

猜你在找的Oracle相关文章