DB2 不会 INSERT 到我创建的 Created Temp Table

8 db2

我通常使用 SQL Server,但对于这个项目,我必须学习 DB2。如果我能让下面的代码工作,我就为整个项目做好了准备。以下是我无法上班的基本示例。我想要做的就是创建一个已创建的全局临时表 (CGTT) 并向其附加数据。如果我使用声明的全局临时表,下面的相同代码将起作用,但出于我的目的,我必须有一个 CGTT。

CREATE GLOBAL TEMPORARY TABLE TEST_TBL(
    KEY_ID BIGINT,
    SOMETEXT VARCHAR(10)
);

INSERT INTO USERID.TEST_TBL
VALUES(123456,'TEST TEST');

SELECT * FROM USERID.TEST_TBL;
SELECT COUNT(*) FROM USERID.TEST_TBL;
Run Code Online (Sandbox Code Playgroud)

以上执行正常,没有错误。执行插入时,它甚至告诉我“更新了 1 行”。但是, select * 和 count(*) 都给了我 0 结果;我想知道这是否是一个权限问题,但是我可以拥有创建 CGTT 但不能插入的权限吗??

提供的任何帮助将不胜感激。提前致谢。

mus*_*cio 11

默认情况下,全局临时表是使用选项创建的ON COMMIT DELETE ROWS。无论您使用什么工具来运行您的语句,都必须打开自动提交选项,这样一旦您发出 INSERT 语句,它就会被提交,从而删除表中的行。

您应该使用该ON COMMIT PRESERVE ROWS选项创建表,或者在运行命令时禁用自动提交并在完成后发出显式COMMIT。您选择哪个选项取决于您的业务逻辑。

执行成功截图