【问题标题】:How to ALTER multiple tables in mysql with single MySQL query?如何使用单个 MySQL 查询更改 mysql 中的多个表?
【发布时间】:2012-09-03 19:11:08
【问题描述】:

我可以通过在 MySQL 中为每个表编写一个查询来更改表。

ALTER TABLE `nom_table` ADD `images` VARCHAR(255) NULL AFTER `link`

但是当我在单行中编写许多 alter 语句时,Mysql 出现语法错误。

ALTER TABLE `nom_table` ADD `data1` VARCHAR(255) NULL AFTER `link`
ALTER TABLE `nom_table` ADD `data2` VARCHAR(255) NULL AFTER `link`

我必须在 PHP 中多次执行此操作,因此如果我对多个 alter 语句运行单个查询,那么服务器的负载将非常少。

有什么解决办法吗?

【问题讨论】:

    标签: php mysql alter-table


    【解决方案1】:

    你可以写:

    ALTER TABLE `nom_table`
        ADD `data1` VARCHAR(255) NULL AFTER `link`,
        ADD `data2` VARCHAR(255) NULL AFTER `link`;
    

    请参阅complete syntax here

    但是,您不能在单个查询中更改不同的表。

    【讨论】:

      【解决方案2】:

      这对我有用......

      $ContentTables
      
      Array
      (
          [11] => Array
              (
                  [db_table] => Content_Tips
                  [label2] => Tip
              )
      
      /* .... same for 11 more tables... */
      
      
          foreach ($ContentTables as $table => $values ) {
      
          $thisTable = $values['db_table'];
      
          $addColumns = mysql_query("
              ALTER TABLE $thisTable
              ADD `ranking` INT(3) AFTER `edit_date`,
              ADD `frequency` INT(3) AFTER `ranking` ")
      
          or die( 'Opps...something wrong in the backroom....'.$thisTable.'...1'.mysql_error());
      
          if ($addColumns) { echo $thisTable.' has been altered...<br/>'; }
      }
      

      【讨论】:

        猜你喜欢
        • 2011-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-28
        • 2019-07-06
        • 2015-06-18
        • 1970-01-01
        • 2010-11-26
        相关资源
        最近更新 更多