gpt4 book ai didi

MySQL 使用 STORAGE MEMORY 子句创建表

转载 作者:行者123 更新时间:2023-11-29 12:03:55 25 4
gpt4 key购买 nike

我遇到了以下问题:我有临时表

CREATE temporary TABLE IF NOT EXISTS tmp_GL_VAR
(
G_TABLE_NAME VARCHAR(100) DEFAULT '',
G_DATE DATETIME,
G_ERROR_CODE INT DEFAULT 0
);

例如,我需要在单个查询中多次使用它,

update t1 set c1 = (select G_TABLE_NAME from tmp_GL_VAR), c2 = (select G_ERROR_CODE from tmp_GL_VAR);

在带有游标的函数等中。但是,在所有这些情况下 MySQL 都会抛出错误:

SQL Error(1137): Can't reopen table 'tmp_GL_VAR'.

然后我尝试使用 STORAGE MEMORY 子句创建永久表(也尝试了 ENGINE MEMORY 子句),希望在 session 结束时清理该表

CREATE TABLE GL_VAR
(
G_TABLE_NAME VARCHAR(100) DEFAULT '',
G_DATE DATETIME,
G_ERROR_CODE INT DEFAULT 0
) STORAGE MEMORY;

但不幸的是这个选项没有效果。数据可在不同的 session (连接)中使用。

请告诉我如何绕过“无法重新打开表”而不重写所有查询、存储函数等(LOC 太多)。要求是:当 session 结束时,表应该被删除或至少被截断,并且一个 session 中的数据不应在另一个 session 中可用(每个用户只能在此表中看到自己的数据)。

感谢任何帮助。

最佳答案

是的。有问题http://dev.mysql.com/doc/refman/5.1/en/temporary-table-problems.html

You cannot refer to a TEMPORARY table more than once in the same query. For example, the following does not work:

mysql> SELECT * FROM temp_table, temp_table AS t2;
ERROR 1137: Can't reopen table: 'temp_table'
This error also occurs if you refer to a temporary table multiple times in a stored function under different aliases, even if the references occur in different statements within the function.

我认为你应该使用常用的表格来达到此目的。

并添加一些 session 标识符以使其在您的多用户系统中工作。 (是的,您必须将此标识符添加到使用此表的所有其他查询中)

随时按此标识符(或旧时间戳,如果需要)删除行

关于MySQL 使用 STORAGE MEMORY 子句创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31898684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com