金仓kingbase数据库临时表

金仓kingbase数据库临时表


ON COMMIT DELETE ROWS:指定当事务提交后,表中的所有行将被删除。
ON COMMIT PRESERVE ROWS:指定当事务提交后,表中的行将被保留。这意味着即使事务提交,数据仍然保留在表中。

以下均在金仓kingbase数据库兼容oracle模式中测试

普通临时表

会话退出表被删除,其他会话无法可见该临时表,它所在的模式是pg_temp开头随机生成的,不指定on commit子句的话默认行为是ON COMMIT PRESERVE ROWS

test=# create temp table t2(id int) ON COMMIT DELETE ROWS;
CREATE TABLE
test=# insert into t2 values(100);
INSERT 0 1
test=# select * from t2;
 id
----
(0 行记录)

test=# select relnamespace::regnamespace,relname,relkind,relpersistence from sys_class where  relname='t2';
 relnamespace | relname | relkind | relpersistence
--------------+---------+---------+----------------
 pg_temp_4    | t2      | r       | t
(1 行记录)

[kingbase@node1 ~]$ ksql test system -p12346
输入 "help" 来获取帮助信息.

test=# select relnamespace::regnamespace,relname,relkind,relpersistence from sys_class where  relname='t2';
 relnamespace | relname | relkind | relpersistence
--------------+---------+---------+----------------
(0 行记录)

全局临时表

会话退出表不会被删除,删除需要使用drop table手工删除,它有自己的业务模式,所有会话都能查到该表,但各自会话生成的数据互相不能看见。不指定on commit子句的话默认行为是ON COMMIT DELETE ROWS

CREATE GLOBAL TEMPORARY TABLE global_temp_orders (
    order_id integer,
    amount numeric(10, 2)
) ON COMMIT DELETE ROWS; 
 
test=# CREATE GLOBAL TEMPORARY TABLE global_temp_orders (
test(#     order_id integer,
test(#     amount numeric(10, 2)
test(# ) ON COMMIT DELETE ROWS;
CREATE TABLE
test=# insert into global_temp_orders(order_id) values(1);
INSERT 0 1
test=# select * from global_temp_orders;
 order_id | amount
----------+--------
(0 行记录)

test=# select relnamespace::regnamespace,relname,relkind,relpersistence from sys_class where  relname='global_temp_orders';
 relnamespace |      relname       | relkind | relpersistence
--------------+--------------------+---------+----------------
 public       | global_temp_orders | r       | x
(1 行记录)

test=# \q
您在 /var/spool/mail/kingbase 中有新邮件
[kingbase@node1 ~]$ ksql test system -p12346
输入 "help" 来获取帮助信息.

test=# select relnamespace::regnamespace,relname,relkind,relpersistence from sys_class where  relname='global_temp_orders';
 relnamespace |      relname       | relkind | relpersistence
--------------+--------------------+---------+----------------
 public       | global_temp_orders | r       | x
(1 行记录)

test=# drop table global_temp_orders ;
DROP TABLE
test=#

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值