You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于现有表创建MEMORY引擎的临时表

问题解答

这个操作可行,但你的语法写法不符合规范,因此触发了语法错误。

错误原因

CREATE TABLE ... LIKE ...语句会完整复制原表的所有结构属性(包括存储引擎、字符集、索引、约束等),MySQL语法不允许在LIKE子句后直接追加ENGINE参数来覆盖原表引擎。

正确实现方式

有两种常用方案可以达成需求:

  1. 先复制表结构,再修改存储引擎(会保留原表的索引、约束等所有结构属性)
CREATE TABLE t LIKE r;
ALTER TABLE t ENGINE = MEMORY;
  1. 直接创建指定引擎的表并复制列结构(注意:这种方式不会复制原表的索引、约束,需要手动添加)
CREATE TABLE t ENGINE = MEMORY SELECT * FROM r WHERE 1=0;

如果需要创建临时表,记得加上TEMPORARY关键字:

-- 方案1:临时表+修改引擎
CREATE TEMPORARY TABLE t LIKE r;
ALTER TABLE t ENGINE = MEMORY;

-- 方案2:直接创建临时内存表
CREATE TEMPORARY TABLE t ENGINE = MEMORY SELECT * FROM r WHERE 1=0;

额外注意:MEMORY引擎有自身特性限制,比如不支持TEXT、BLOB类型,不支持事务与外键等,如果原表r包含这些不兼容的结构,修改引擎会执行失败,需要提前确认原表结构是否适配MEMORY引擎。

内容的提问来源于stack exchange,提问作者theking2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 20:45:41