小编典典

Oracle SQL-我可以返回列值的“以前”状态吗

sql

假设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等效的方法来实现这一目标,所以我不必先进行“选择”就可以获取之前的值吗?


阅读 251

收藏
2021-04-22

共1个答案

小编典典

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上测试

2021-04-22