【问题标题】:SQL Temporary Table IssueSQL 临时表问题
【发布时间】:2020-09-24 08:02:36
【问题描述】:

我创建了一个临时表DETAILS 并遵循在其中创建和插入的相同语法。但是我没有收到任何结果集但是,CREATEINSERT 语句运行成功,并且在 INSERT 语句中 Row 也受到了影响。但是当我运行最后一个SELECT 语句来查看记录时,结果集是空的。

DROP TABLE DETAILS ;
CREATE GLOBAL TEMPORARY TABLE DETAILS AS (
SELECT ins_id , firstname , pages FROM 
INSTRUCTOR)DEFINITION ONLY;

INSERT INTO DETAILS
SELECT ins_id , firstname , pages 
FROM INSTRUCTOR WHERE ins_id = '1';

SELECT * FROM DETAILS ;

【问题讨论】:

  • CREATE ... 语句运行成功 - 我不相信,它的文字与 MySQL 8.0 Reference Manual / ... / CREATE TABLE Statement 矛盾。 PS。 MySQL 中没有全局临时表。
  • CREATE GLOBAL TEMPORARY TABLE - oracle 中存在 - 这个问题可能被错误地标记。
  • 你的INSTRUCTOR 表中有什么?运行SELECT ins_id , firstname , pages FROM INSTRUCTOR WHERE ins_id = '1'; 时返回什么?请重新标记您的问题以反映您的实际 RDBMS。
  • INSTRUCTOR 是一个简单的表,其中包含所有 Instructor 的记录,只有 5 列和 10 条记录 > firstname 、 lastname 、 pages 、 books 和 ins_id(Pk)。 .

标签: mysql db2 rdbms data-science-experience global-temp-tables


【解决方案1】:

如果你想在提交后保留 CGTT 中的行,你必须指定 CREATE GLOBAL TEMPORARY TABLE 语句的 ON COMMIT PRESERVE ROWS 选项。
ON COMMIT DELETE ROWS 选项在其他情况下生效,并且这样的表在提交时被清除。

【讨论】:

    猜你喜欢
    • 2011-08-31
    • 2011-03-03
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    相关资源
    最近更新 更多