当前位置: 首页 > news >正文

【达梦数据库】临时表的使用测试

目录

  • 背景
  • 问题复现
  • 问题原因
  • 解决方法

背景

用户在使用临时表的过程中,执行commit提交命令之后,临时表的数据被清空,无法被接下来的存储过程复用。

问题复现

-----------------------------提交删除行-----------------------------
--创建临时表
CREATE GLOBAL TEMPORARY TABLE "SYSDBA"."temp_table"
(
"id" VARCHAR(50),
"name" CHAR(10))
ON COMMIT DELETE ROWS STORAGE(ON TEMP);--插入数据
INSERT INTO "SYSDBA"."temp_table"
VALUES(1,'Tom');--查看数据
SELECT * FROM "SYSDBA"."temp_table";
--id	name
--'1'	'Tom       '--提交
COMMIT;--查看数据:表中数据被清空
SELECT * FROM "SYSDBA"."temp_table";
--id	name-----------------------------提交保留行-----------------------------
--创建临时表
create global temporary table "SYSDBA"."temp_table1"
("id" VARCHAR(50),"name" CHAR(10)
)on commit preserve rows 
storage(initial 1, next 1, minextents 1, fillfactor 0)
;--插入数据
INSERT INTO "SYSDBA"."temp_table1"
VALUES(1,'Tom');--查看数据
SELECT * FROM "SYSDBA"."temp_table1";
--id	name
--'1'	'Tom --提交
COMMIT;--查看数据:表中数据被清空
SELECT * FROM "SYSDBA"."temp_table1";
--id	name
--'1'	'Tom       '-----------新打开会话窗口
--查看数据:表中数据被清空
SELECT * FROM "SYSDBA"."temp_table1";
--id	name

问题原因

达梦临时表有两种类型:会话级的临时表和事务级的临时表。

ON COMMIT DELETE ROWS --事务级临时表
它是临时表的默认参数,表示临时表中的数据仅在事务过程(Transaction)中有效,当事务提交(COMMIT)后,临时表的暂时段将被自动截断(TRUNCATE)
但是临时表的结构以及元数据还存储在用户的数据字典中。如果临时表完成它的使命后,最好删除临时表,否则数据库会残留很多临时表的表结构和元数据。

ON COMMIT PRESERVE ROWS --会话级临时表
它表示临时表的内容可以跨事务而存在,不过,当该会话结束时,临时表的暂时段将随着会话的结束而被丢弃,临时表中的数据自然也就随之丢弃。
但是临时表的结构以及元数据还存储在用户的数据字典中。如果临时表完成它的使命后,最好删除临时表,否则数据库会残留很多临时表的表结构和元数据。

参考链接: 达梦数据库临时表介绍

解决方法

重建临时表为会话级临时表ON COMMIT PRESERVE ROWS。(p.s.没有找到事务性临时表直接更改成会话型临时表的方法)

http://www.lryc.cn/news/447609.html

相关文章:

  • 【GUI设计】基于Matlab的图像去噪GUI系统(8),matlab实现
  • 【计算机科学导论】
  • 【C++】I/O流的使用介绍
  • 深度学习:(八)深层神经网络参数与流程
  • `pattern = r“(\d+)(CNY|JPY|HKD|EUR|GBP|fen|cents|sen|eurocents|pence)“
  • 宝塔面板部署雷池社区版教程
  • 【击败100%】258. 各位相加
  • 【alist】宝塔面板docker里的alist默认admin无法登录
  • 【击败100%】1281. 整数的各位积和之差
  • Flink基本概念和算子使用
  • Kafka 3.0.0集群部署教程
  • 昇思MindSpore进阶教程-格式转换
  • 搜索软件 Everything 的安装与使用教程
  • oracle 如何判断当前时间在27号到当月月底
  • Django 配置邮箱服务,实现发送信息到指定邮箱
  • Git使用手册
  • sql-labs靶场
  • 【Redis入门到精通二】Redis核心数据类型(String,Hash)详解
  • 如何快速免费搭建自己的Docker私有镜像源来解决Docker无法拉取镜像的问题(搭建私有镜像源解决群晖Docker获取注册表失败的问题)
  • QT 获取视频帧Opencv获取清晰度
  • 生成式AI如何辅助医药行业智能营销
  • 演示:基于WPF的DrawingVisual开发的Chart图表和表格绘制
  • 汽车保养BBBBBBBBBBB
  • H3C R4900 G3服务器上配置本地磁盘RAID
  • HBase DDL操作代码汇总(namespace+table CRUD操作)
  • 关于TCP的基础知识
  • MyBatis 中的类型别名配置详解
  • 如何提高UI自动化的稳定性
  • ubuntu如何开启和关闭图形界面
  • 从博客到ICT社区:深化学习与交流的桥梁