如何在mysql中一次改变多个表?

33 浏览
0 Comments

如何在mysql中一次改变多个表?

我正在尝试修改多个表格,并将username VARCHAR列的大小更改为999,因为它当前的大小太小了,导致事情出了问题。 我该怎么做?

我尝试了以下方式,这对一个表格有效,但在尝试更新多个表名时返回错误:

ALTER TABLE  `TABLE_NAME` CHANGE `username` VARCHAR( 999 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL

admin 更改状态以发布 2023年5月24日
0
0 Comments

我发现唯一的方法是通过外部文件来实现。这是我的实现:

function changeSchema($oldName, $newName, $type, $len)
{
    $res = mysql_query("SELECT DISTINCT TABLE_NAME
        FROM INFORMATION_SCHEMA.COLUMNS
        WHERE COLUMN_NAME = '$oldName' AND 
        TABLE_SCHEMA = 'your_database_name'");
    if($res)
        while($line=mysql_fetch_object($res))
            mysql_query("ALTER TABLE `$line->TABLE_NAME` CHANGE `$oldName` `$newName` $type( $len ) NOT NULL ");
    }
}

然后我可以轻松地修改任何我想要的表格。

0
0 Comments

你不能用单个查询完成。你需要查询 information_schema 视图来获取要更改的表和列的列表。然后您将使用生成的结果集创建 ALTER 查询(可以在外部应用程序/脚本中或在 MySQL 中使用游标和准备语句)

0