KingbaseES临时表

临时表在应用程序需要缓冲结果集时很有用,因为它是通过运行多个 DML 操作构建的。您可以创建全局临时表或者局部临时表。
临时表概述
临时表保存的数据仅在事务或会话期间存在。临时表中的数据是会话私有的。每个会话只能看到和修改自己的数据。简单来看全局临时表定义是持久的,而表数据是临时的,而本地临时表的表定义和表数据都是临时的,会在会话退出后被删除。
本地临时表和全局临时表具体有如下四点区别:
• 1. 本地临时表在临时模式下,用户不可以指定;但是全局临时表创建在用户指定模式下;
• 2. 本地临时表对象本身并不是一直存在,在会话退出后,本地临时表会被删除;全局临时表创建之后,一直存在,除非显示去删除它。
• 3. 删除本地临时表,不受其他会话影响;但是删除全局临时表时,所有会话都不能持有全部临时表的数据。
• 4. 全局临时表不支持外键约束也不支持其他表引用全局临时表作为外键约束,而本地临时表没有这个要求。
创建全局临时表
全局临时表是存储在磁盘上的永久数据库对象,对连接到数据库的所有会话都可见。
全局临时表的定义对所有会话都是可见的,但是全局临时表中的数据只对向表中插入数据的会话可见。您使用CREATE GLOBAL TEMPORARY TABLE 语句创建一个全局临时表。
下列示例演示了如何创建全局临时表。这条语句创建了一个特定于事务的全局临时表:

CREATE GLOBAL TEMPORARY TABLE admin_work_area_trans
        (startdate DATE,
         enddate DATE,
         class CHAR(20))
      ON COMMIT DELETE ROWS;

这条语句创建了一个特定于会话的全局临时表:

CREATE GLOBAL TEMPORARY TABLE admin_work_area_session
        (startdate DATE,
         enddate DATE,
         class CHAR(20))
      ON COMMIT PRESERVE ROWS;

创建局部临时表
局部临时表的元数据和内容仅在创建该临时表的会话中可见。局部临时表在以下情况下很有用:
• 当应用程序将临时数据存储在临时表中时,这些临时表只填充一次,读取几次,然后在事务或会话结束时删除
• 当一个会话被无限期地维护,并且必须为不同的事务创建不同的临时表时
• 创建临时表时,不能启动新事务或提交现有事务
• 当同一个用户的不同会话必须对一个临时表使用相同的名称时使用 CREATE LOCAL TEMPORARY TABLE 语句创建一个局部临时表。LOCAL 可以不指定,因为默认是局部临时表。
下列示例演示如何创建局部临时表。这条语句创建了一个特定于事务的局部临时表:

CREATE LOCAL TEMPORARY TABLE sales_ptt_transaction
(time_id DATE,
amount_sold NUMBER(10,2))
ON COMMIT DELETE ROWS;

这条语句创建了一个局部临时表,它是特定于会话的:

CREATE LOCAL TEMPORARY TABLE sales_ptt_session
(time_id DATE,
amount_sold NUMBER(10,2))
ON COMMIT PRESERVE ROWS;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值