----start
临时表(TEMPORARY TABLE)通常应用在需要定义临时集合的场合。但是,在大部分需要临时集合的时候,我们根本就不需要定义临时表。当我们在一条SQL语句中只使用一次临时集合时,我们可以使用嵌套表表达式来定义临时集合;当我们在一条SQL语句中需要多次使用同一临时集合时,我们可以使用公共表表达式;只有当我们在一个工作单元中的多条SQL语句中使用同一临时集合时,我们才需要定义临时表。
可以通过以下三种方式定义临时表:
方法1:
DECLARE GLOBAL TEMPORARY TABLE SESSION.EMP
(
NAME VARCHAR(10),---姓名
DEPT SMALLINT,---部门
SALARY DEC(7,2)---工资
)
ON COMMIT DELETE ROWS;
方法2:
DECLARE GLOBAL TEMPORARY TABLE session.emp
LIKE staff INCLUDING COLUMN DEFAULTS
WITH REPLACE
ON COMMIT PRESERVE ROWS;
方法3:
DECLARE GLOBAL TEMPORARY TABLE session.emp AS
(
SELECT * FROM staff WHERE <condition>
)
DEFINITION ONLY
WITH REPLACE;
定义了临时表后,我们可以像使用普通表一样使用临时表。临时表只对定义它的用户有效,不同用户可以在同一时间定义同名的临时表,他们之间互不影响。临时表的生命周期是SESSION,当SESSION关闭时,临时表将自动删除,这也是临时表的模式名只能为SESSION的原因。此外,我们还可以给临时表定义索引。
在使用DB2的临时表时, 以下几点需要注意:
1. DB2的临时表需要用命令Declare Temporary Table来创建, 并且需要创建在用户临时表空间上;
2. DB2在数据库创建时, 缺省并不创建用户临时表空间, 如果需要使用临时表, 则需要用户在创建临时表之前创建用户临时表空间;
[color=red] 3. 临时表的模式为SESSION;[/color]
4. 缺省情况下, 在Commit命令执行时, 临时表中的所有记录将被删除; 这可以通过创建临时表时指定不同的参数来控制;
;[/color]
5. 运行ROLLBACK命令时, 用户临时表将被删除;
6. 在DB2版本8中, 可以对临时表纪录日志;
临时表(TEMPORARY TABLE)通常应用在需要定义临时集合的场合。但是,在大部分需要临时集合的时候,我们根本就不需要定义临时表。当我们在一条SQL语句中只使用一次临时集合时,我们可以使用嵌套表表达式来定义临时集合;当我们在一条SQL语句中需要多次使用同一临时集合时,我们可以使用公共表表达式;只有当我们在一个工作单元中的多条SQL语句中使用同一临时集合时,我们才需要定义临时表。
可以通过以下三种方式定义临时表:
方法1:
DECLARE GLOBAL TEMPORARY TABLE SESSION.EMP
(
NAME VARCHAR(10),---姓名
DEPT SMALLINT,---部门
SALARY DEC(7,2)---工资
)
ON COMMIT DELETE ROWS;
方法2:
DECLARE GLOBAL TEMPORARY TABLE session.emp
LIKE staff INCLUDING COLUMN DEFAULTS
WITH REPLACE
ON COMMIT PRESERVE ROWS;
方法3:
DECLARE GLOBAL TEMPORARY TABLE session.emp AS
(
SELECT * FROM staff WHERE <condition>
)
DEFINITION ONLY
WITH REPLACE;
定义了临时表后,我们可以像使用普通表一样使用临时表。临时表只对定义它的用户有效,不同用户可以在同一时间定义同名的临时表,他们之间互不影响。临时表的生命周期是SESSION,当SESSION关闭时,临时表将自动删除,这也是临时表的模式名只能为SESSION的原因。此外,我们还可以给临时表定义索引。
在使用DB2的临时表时, 以下几点需要注意:
1. DB2的临时表需要用命令Declare Temporary Table来创建, 并且需要创建在用户临时表空间上;
2. DB2在数据库创建时, 缺省并不创建用户临时表空间, 如果需要使用临时表, 则需要用户在创建临时表之前创建用户临时表空间;
[color=red] 3. 临时表的模式为SESSION;[/color]
4. 缺省情况下, 在Commit命令执行时, 临时表中的所有记录将被删除; 这可以通过创建临时表时指定不同的参数来控制;
;[/color]
5. 运行ROLLBACK命令时, 用户临时表将被删除;
6. 在DB2版本8中, 可以对临时表纪录日志;