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

dohp0rv5  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(331)

在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?可能是一种有助于功能组合的功能 LIKE & INSERT ?

zkure5ic

zkure5ic1#

CREATE TABLE permanent
SELECT * FROM _tmp;

小提琴
或者(如果您需要独特的密钥存在)

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

小提琴

相关问题