我有一个Web应用程序,允许人们管理数据库中的一组用户和课程。使用Web应用程序为每个订户复制此数据库结构,并用其数据填充该订户。例如:
Subscriber 1 DB
user table
userID, name, age, etc
lesson table
lessonID, start, end, location, etc
Subscriber 2 DB
user table
userID, name, age, etc
lesson table
lessonID, start, end, location, etc
将来,当添加新功能时,我当然必须对这些数据库进行更改。我将如何更新所有数据库的数据库结构?
我知道如何添加额外的列:
ALTER TABLE user ADD COLUMN address VARCHAR DEFAULT 0;
但是我如何将其应用于所有数据库?有没有办法在MYSQL工作台中做到这一点?
该应用程序使用PHP,Google App Engine和Cloud SQL。感谢您的输入!
最佳答案
您可以很好地算出您拥有多少用户,然后在每个数据库上运行for()
循环并更新必要的表。不知道这在专业发展方面有多高效率或洁净度,但我做这样的事情对我来说很有意义:
function UpdateDatabase($db_name) {
// connect to database here
// run query (queries) to update the database here
}
for($user = number_of_users; $user = 1; $user++) {
UpdateDatabase("Subscriber_" . $user);
}
当然,此代码假定您对其进行数字编号。无论您对所有用户进行编号还是列出,其想法都是相同的。
for
循环将执行以下操作:获取用户#id
更新数据库“ Subscriber_id”
因此,随着循环的进行,它将从ID为1的用户开始,一直到结尾。