在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
?
1条答案
按热度按时间zkure5ic1#
小提琴
或者(如果您需要独特的密钥存在)
小提琴