在所有mysql表中添加一个新列


Add a new column in all mysql tables

我有一个练习表,像这样:

    id     | otherColumn1 | otherColumn2 | otherColumn3
--------------------------------------------------------
    1      |  othervalue1 |  othervalue2 | othervalue3 
    2      |  othervalue1 |  othervalue2 | othervalue3 

我有很多其他的表:

Person
Address
Contact
------
------
------

现在我的任务是在每个其他表中添加practiceId列,这将是来自练习表的外键。请记住,有些表已经有practiceId列,所以我不需要更改这些表。

问题是有很多表。我可以用更少的查询来做到这一点吗?或者我可以为此编写一个高效的PHP脚本吗?

我已经有一个php脚本,可以从一个特定的数据库获取表名。

谢谢

不,确实没有办法一次将一个字段添加到多个表中。您需要为此编写一个脚本。这应该不是一个很难写的脚本:

一个简单的SHOW TABLES查询将得到一个表列表,然后您可以在PHP中循环使用。

在循环中,SHOW COLUMNS FROM tablename查询将为您提供当前表中的字段,您可以使用它来检查它是否已经有practiceId字段,然后在必要时添加它。

要添加字段,请使用ALTER TABLE tablename ADD COLUMN practiceId INT(我假设是INT,但如果使用不同的数据类型,请替换为需要定义的字段)

要在新列上添加索引,还可以使用ALTER TABLECREATE INDEX。创建一个外键约束使用ALTER TABLEADD FOREIGN KEY参数(但我相信这只适用于InnoDB表)。

参考:

    <
  • 显示表/gh><
  • 显示列/gh>
  • ALTER TABLE
  • <
  • 创建索引/gh>
  • 外键约束