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



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

对于预先创建的临时表:

CREATE TEMPORARY TABLE _tmp SELECT 0 AS Col1, 'text' AS Col2;
ALTER TABLE _tmp ADD UNIQUE INDEX (Col1, Col2);

当然,人们总是可以去:

CREATE TABLE permanent SELECT * FROM _tmp; -- 1
ALTER TABLE permanent ADD UNIQUE INDEX (Col1, Col2); -- 2

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

-- 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?也许是有助于将CCD_ 1&INSERT

CREATE TABLE permanent
SELECT * FROM _tmp;

小提琴

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

CREATE TABLE permanent ( UNIQUE KEY `Col1` (`Col1`,`Col2`) )
SELECT * FROM _tmp;

小提琴

最新更新