关于SELECT * FROM FINAL / OLD / NEW表

时间:2014-11-27 01:35:47

标签: sql

我最近才知道这些类型的表 - FINAL / OLD / NEW。但是,当我在网上搜索时,没有解释它的作用。谁能提供一些解释?在什么情况下可以使用或不使用这些表。

1 个答案:

答案 0 :(得分:2)

在执行DML语句时,这似乎是对DB2输出表的引用。该行为类似于SQL Server中的MERGE语句,或者在触发器语句中使用INSERTED / DELETED输出表。

>>-+-FINAL TABLE--(INSERT statement)---------------+------------>
   +-+-FINAL-+--TABLE--(searched UPDATE statement)-+   
   | '-OLD---'                                     |   
   +-OLD TABLE--(searched DELETE statement)--------+   
   '-FINAL TABLE--(MERGE statement)----------------'   

>--+--------------------+--------------------------------------><
   '-correlation-clause-'   

最终表

指定中间结果表的行表示SQL数据更改语句在SQL数据更改语句完成时显示的行集。如果有AFTER触发器导致对作为SQL数据更改语句的目标的表执行进一步操作,则会返回错误。如果SQL数据更改语句的目标是使用INSTEAD OF触发器定义的数据更改类型的视图,则会返回错误。

OLD TABLE

中间结果表的行表示在应用SQL数据更改语句之前存在的受影响行集。

Sourced from IBM Knowledge Center

本文将更详细地介绍其用法。 FINAL TABLE select包含在change语句中,允许您从中间结果表中进行选择:

SELECT * FROM FINAL TABLE (INSERT INTO MY_TABLE (COL1, COL2) VALUES (VALUE1, VALUE2))

Syntax Example

**我通常不在DB2中工作,也没有验证这里提供的SQL **