当前位置: 首页 > 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.没有找到事务性临时表直接更改成会话型临时表的方法)

相关文章:

  • 使用Plotly绘制交互式图表:从入门到精通
  • LabVIEW界面输入值设为默认值
  • 【Python报错已解决】AttributeError: ‘tuple‘ object has no attribute ‘log_softmax‘
  • Voxel mamba :基于Mamba的3D目标检测算法解析
  • vue2+elementUI实现handleSelectionChange批量删除-前后端
  • 基于物联网技术的智能运动检测仪设计(微信小程序)(230)
  • 数据链路层之以太网
  • windows通过文件系统访问ftp传输中文乱码
  • VMware ESXi 8.0U3b macOS Unlocker OEM BIOS 2.7 标准版和厂商定制版
  • 51单片机应用开发(进阶)---数码管显示按键“加”“减”计数
  • Stable Diffusion 蒙版:填充、原图、潜空间噪声(潜变量噪声)、潜空间数值零(潜变量数值零)
  • 【JavaEE】——线程池大总结
  • 上海建站提升在线曝光率的关键
  • 记Flink SQL 将数据写入 MySQL时的一个优化策略
  • 宝塔面板部署雷池社区版教程
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • IDEA 插件开发入门教程
  • JavaScript类型识别
  • JS+CSS实现数字滚动
  • MySQL主从复制读写分离及奇怪的问题
  • node入门
  • webgl (原生)基础入门指南【一】
  • 程序员该如何有效的找工作?
  • 关于List、List?、ListObject的区别
  • 缓存与缓冲
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 基于组件的设计工作流与界面抽象
  • 老板让我十分钟上手nx-admin
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 如何编写一个可升级的智能合约
  • 如何实现 font-size 的响应式
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 项目管理碎碎念系列之一:干系人管理
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #微信小程序:微信小程序常见的配置传旨
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (LeetCode 49)Anagrams
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (含答案)C++笔试题你可以答对多少?
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (六)激光线扫描-三维重建
  • (转)EXC_BREAKPOINT僵尸错误
  • (自用)交互协议设计——protobuf序列化
  • .bat批处理出现中文乱码的情况
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET Framework 3.5安装教程
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?