代码之家  ›  专栏  ›  技术社区  ›  Dave Kiss

使用单个SQL命令创建多个表

  •  0
  • Dave Kiss  · 技术社区  · 14 年前

    我在这里和谷歌上都搜索到了这个问题,却意外地找不到答案。我试图创建提交到MySQL的语法,该语法将创建具有相同列的多个表,但返回了一个错误。你能指出我的语法有什么问题吗,或者这是可能的吗?

     CREATE TABLE news, life
     (
     id int PRIMARY KEY AUTO_INCREMENT ,
     name varchar( 30 ) ,
     email varchar( 50 ) ,
     COMMENT text,
     datetime datetime,
     ip varchar( 20 )
     ) 
    
    2 回复  |  直到 14 年前
        1
  •  2
  •   Peter Lang    14 年前

    这是不可能的。

    想想你的桌子设计。听起来您应该考虑创建一个表并添加另一列 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 , FOREIGN KEY )但不会被复制。你必须自己处理它们。

        2
  •  3
  •   davek    14 年前

    您在MySQL中,因此可以使用 LIKE 条款 CREATE TABLE 命令;这样,您还可以复制列属性和索引,例如

    CREATE TABLE new_tbl LIKE orig_tbl;
    

    看见 http://dev.mysql.com/doc/refman/5.1/en/create-table.html

    使用LIKE创建空表 根据另一个的定义 表,包括任何列属性 和原始文件中定义的索引 表:创建新表 原件;副本是使用 表存储的相同版本 格式化为原始表。这个 在上需要选择权限 原始表。就像只为 基表,不用于视图。创建 表…像不保存任何 数据目录或索引目录 为指定的表选项 原始表或任何外键 定义。