创建临时表 DM8达梦数据库
1 事务型临时表
创建指定临时表是事务级的,每次事务提交或回滚之后,表中所有数据都被删除
CREATE TEMPORARY TABLE TEMP_COMM (C1 INT,C2 INT,C3 DATETIME) ON COMMIT DELETE ROWS;
2 会话型临时表
创建指定临时表是会话级的,会话结束时才清空表;
CREATE TEMPORARY TABLE TEMP_SESS (C1 INT,C2 INT,C3 DATETIME) ON COMMIT PRESERVE ROWS;
- 临时表的索引永远在 TEMP表空间;
- 若指定 TEMPORARY,则表示该表为一个临时表,只在一个会话中有效,当一个会话结束,该临时表被自动清空。表名需要是合法的标识符,且满足 SQL 语法要求。当表名以“##”开头时,该表为全局临时表;
- 表名不允许使用以下字符串作为前缀:BM 、 B M J _、BMJ 、BMJ、MDRT 、 M L O G _、MLOG 、MLOG、MTAB 、 M V I E W _、MVIEW 、MVIEW、MTRG 、 S T A T _、STAT 、STAT。表名不允许使用以下字符串作为后缀: A L O G 、 ALOG、 ALOG、AUX、 D A U X 、 DAUX、 DAUX、RAUX、 R O T 、 ROT、 ROT、UAUX;
- TEMPORARY 临 时 表 不 支 持 压 缩 COMPRESS 功 能 。 当ENABLE_TMP_TAB_ROLLBACK 为 0 时,不允许对临时表创建主键约束以及唯一约束;
- GLOBAL 目前仅支持 GLOBAL 临时表,因此建临时表时是否指定 GLOBAL 效果是一样的;
- 表名最大长度为 128 个字节;
- 所建基表至少要包含一个<列名>指定的列,在一个基表中,各<列名>不得相同。一张基表中至多可以包含 2048 列;