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

时间:2011-04-18 11:31:41

标签: php mysql sql

我有一个练习表,如下所示:

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

我还有很多其他表:

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

现在我的任务是在每个其他表中添加 practiceId 列,该列将是练习表中的外键。请记住,某些表已经有 practiceId 列,因此我无需更改这些表。

问题是有很多表。我可以用较少的查询来执行此操作吗?或者我可以为此编写有效的PHP脚本吗?

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

由于

1 个答案:

答案 0 :(得分:2)

不,实际上没有办法一次向多个表添加字段。您需要为其编写脚本。不过,这不应该是一个难以编写的剧本:

一个简单的SHOW TABLES查询将为您提供一个表列表,然后您可以在PHP中循环。

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

要添加字段,请使用ALTER TABLE tablename ADD COLUMN practiceId INT(我假设为INT,但如果您使用其他数据类型,则需要替换为您的字段)

要在新列上添加索引,您还可以使用ALTER TABLE,或使用CREATE INDEX。要创建外键约束,请使用带有ALTER TABLE参数的ADD FOREIGN KEY(但我相信这仅适用于InnoDB表)。

参考: