如何在单个原子操作中将临时 table 转换为永久 table?
How to convert a temporary table to permanent table in a single atomic operation?
如何在单个原子操作中将临时 table 转换为静态 table,同时仍然对 table 结构不可知但仍保留它,在 MySQL?
对于 table 的预先创建的临时文件:
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 or DML)) 语句来完成。
有没有办法将其改进为单个 DDL?也许是一种功能,可以促进结合 LIKE
和 INSERT
的功能?
如何在单个原子操作中将临时 table 转换为静态 table,同时仍然对 table 结构不可知但仍保留它,在 MySQL?
对于 table 的预先创建的临时文件:
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 or DML)) 语句来完成。
有没有办法将其改进为单个 DDL?也许是一种功能,可以促进结合 LIKE
和 INSERT
的功能?