我在这里和谷歌上搜索了这个,但令人惊讶的是找不到答案。我试图创建提交到mysql的语法,这将创建具有相同列的多个表,但它返回了一个错误。你能指出我的语法有什么问题,或者这是否可能?
CREATE TABLE news, life
(
id int PRIMARY KEY AUTO_INCREMENT ,
name varchar( 30 ) ,
email varchar( 50 ) ,
COMMENT text,
datetime datetime,
ip varchar( 20 )
)
答案 0 :(得分:3)
你在mysql中,所以你可以使用LIKE
命令的CREATE TABLE
子句;这样你就可以获得复制的列属性和索引,例如
CREATE TABLE new_tbl LIKE orig_tbl;
请参阅http://dev.mysql.com/doc/refman/5.1/en/create-table.html
使用LIKE创建一个空表 基于另一个的定义 表,包括任何列属性 和原始中定义的索引 table:CREATE TABLE new_tbl LIKE orig_tbl;使用创建副本 相同版本的表存储 格式为原始表。该 需要SELECT权限 原始表。 LIKE只适用于 基表,不适用于视图。创建 表... LIKE不保留任何 DATA DIRECTORY或INDEX DIRECTORY 为其指定的表选项 原始表或任何外键 定义
答案 1 :(得分:2)
这不可能。
想想你的桌面设计。这听起来像您应该考虑创建一个表并添加另一个type
或news
列(或对另一个定义类型的表的引用)。
如果您确实需要两张桌子,请创建第一张桌子:
life
然后
CREATE TABLE news
(
id int PRIMARY KEY AUTO_INCREMENT ,
name varchar( 30 ) ,
email varchar( 50 ) ,
COMMENT text,
datetime datetime,
ip varchar( 20 )
)
但不会复制索引和约束(CREATE TABLE life AS ( SELECT * FROM news where 1=2 );
,UNIQUE
,PRIMARY KEY
)。你必须自己处理它们。