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

前端之家收集整理的这篇文章主要介绍了Oracle SQL – 可以返回列值的“before”状态前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设myTable中的以下行:
  1. id = 1
  2. letter = 'a'

在Oracle中,可以轻松地执行以下操作:

  1. update myTable set
  2. letter = 'b'
  3. where id = 1
  4. returning letter
  5. into myVariable;

然后myVariable将保存值“b”.

我正在寻找的是一些返回信件的“之前”值的方法

即.将以前的更新替换为:

  1. update myTable set
  2. letter = 'b'
  3. where id = 1
  4. returning letter "before the update"
  5. into myVariable;

而myVariable应该保存值’a’;

我明白T-sql可以通过OUTPUT子句来实现.

有没有Oracle等同的方式实现这一点,所以我不必先做一个“选择”只是为了获得以前的价值?

  1. update
  2. (
  3. select T.*,(select letter from DUAL) old_letter
  4. from myTable T
  5. where id=1
  6. )
  7. set letter = 'b'
  8. returning old_letter into myVariable;

经过Oracle 11.2测试

猜你在找的Oracle相关文章