在操作数据的同时查看操作前或操作后的值

----start

我们经常需要对数据库进行插入、更新、删除等操作,如果我们想在更新数据的同时查看一下更新后的值,该怎么办呢?怎么样?是不是不太明白我说的话,不要紧,考虑下面的情况:

 

假设现在要给工资<=2000的员工涨工资,在原来的基础上提供20%,我们可以这么写:

  

当你更新完上面的语句后,发现自己很冲动,没有查看有哪些员工就给更新了,然后你可能觉得不要紧,用如下语句查看一下:

 

遗憾的是上面语句查询出来的结果已经不全是你更新的数据了,王五也被查询出来了,而王五并没有涨工资。那么,有没有一种方法,在更新的同时查看一下哪些值被更新了,更新前或更新后的值是多少呢?答案是有,如下:

  

如果更新操作影响的行有很多,而我们只想看一下有没有姓李的人,只取10条查看一下,该怎么办呢?如下:

 

看到这,如果你执行了上面的语句,那么你可能发现,以上语句的查询结果是更新后的值,那么,我们想查看更新前的值,该怎么办呢?很简单,我们只要把 FINAL TABLE 换成 OLD ABLE 就可以了,如下:

  

那么,我既想看一下更新前的值,又想看一下更新后的值,该怎么呢?是不是把关键字FINAL和OLD一起使用就可以了呢?答案没有直接的方法同时查看更新前和更新后的值,但是我们可以通过INCLUDE关键字,创造虚拟字段来包含更新前的值,如下:

 

除了FINAL和OLD关键字外,其实还有个关键字:NEW,它的作用是,查看SQL更新后,trigger(触发器)执行前的值。

 

另外把上面的UPDATE语句换成INSERT和DELETE语句同样适用

 

上面的这个例子不是很实用,其实这个功能最典型的用途是,当我们向自动生成主键的表插入数据后,我们很可能需要查看生成的主键值,这个时候,这个功能将相当有用。

---更多参见:DB2 SQL 精萃

----声明:转载请注明出处。

----last updated on 2010.1.9

----written by ShangBo on 2009.11.5

----end

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值