像旧表一样创建新表

时间:2014-07-18 09:41:25

标签: mysql

当我们在这种情况下创建表的副本时,不会复制旧表CONSTRAINT,我使用

create table new_table like old_table;

所以我这样做,我们也可以复制old_table CONSTRAINT。

4 个答案:

答案 0 :(得分:2)

来自CREATE TABLE docs

CREATE TABLE ... LIKE不保留为原始表或任何外键定义指定的任何DATA DIRECTORY或INDEX DIRECTORY表选项。

来自CREATE TABLE... SELECT docs

CREATE TABLE ... SELECT不会自动为您创建任何索引。这样做是为了使声明尽可能灵活。如果要在创建的表中包含索引,则应在SELECT语句之前指定这些索引。

<强>结论

所以换句话说它不是直接可能的..

解决方法

在我的项目中,我几乎总是使用SHOW CREATE TABLE old_table来获取SQL并手动调整代码。

答案 1 :(得分:1)

试试这个

CREATE TABLE new_table LIKE old_table;

然后插入

INSERT INTO new_table SELECT * FROM old_table;

答案 2 :(得分:1)

已在documentation中指定。

CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;

答案 3 :(得分:0)

尝试这两个查询

CREATE TABLE new_table LIKE old_table;
INSERT INTO new_table SELECT * FROM old_table;