首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在单个原子操作中将临时表转换为永久表?

如何在单个原子操作中将临时表转换为永久表?
EN

Stack Overflow用户
提问于 2020-12-31 00:08:04
回答 1查看 107关注 0票数 0

如何在单个原子操作中将临时表转换为静态表,同时仍然不知道表结构,但在MySQL中保留表结构?

对于预先创建的临时表:

代码语言:javascript
复制
CREATE TEMPORARY TABLE _tmp SELECT 0 AS Col1, 'text' AS Col2;
ALTER TABLE _tmp ADD UNIQUE INDEX (Col1, Col2);

当然,你也可以这样说:

代码语言:javascript
复制
CREATE TABLE permanent SELECT * FROM _tmp; -- 1
ALTER TABLE permanent ADD UNIQUE INDEX (Col1, Col2); -- 2

或者,由于缺乏更好的解决方案,我正在使用:

代码语言:javascript
复制
-- mostly agnostic to the structure unless for generated or auto-increment columns
CREATE TABLE permanent LIKE _tmp; -- 1
INSERT INTO permanent SELECT * FROM _tmp; -- 2

如上所述,目前我只能使用至少2条(DDL + (DDL或DML))语句来完成此任务。

有没有办法将其改进为单一的DDL?也许是一种便于组合LIKEINSERT的功能

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-31 00:15:31

代码语言:javascript
复制
CREATE TABLE permanent
SELECT * FROM _tmp;

fiddle

或者(如果您需要唯一密钥存在)

代码语言:javascript
复制
CREATE TABLE permanent ( UNIQUE KEY `Col1` (`Col1`,`Col2`) )
SELECT * FROM _tmp;

fiddle

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65509960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档