在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;
小提琴