如何在sql中一次更改多个表的结构

如何在sql中一次更改多个表的结构,sql,Sql,我的数据库中有多个名称不同的表,但都具有相同的结构。有没有一种方法可以改变结构,在每个表中添加一列?正如David Faber所建议的,您只能在循环中完成这一点 为了实现这一点,我提供了下面的代码示例 private static final String ALTER_USER_TABLE_ColumnDetails = " ADD NEW_COLUMN_NAME TEXT"; @Override public void onUpgrade(SQLit

我的数据库中有多个名称不同的表,但都具有相同的结构。有没有一种方法可以改变结构,在每个表中添加一列?

正如David Faber所建议的,您只能在循环中完成这一点

为了实现这一点,我提供了下面的代码示例

    private static final String ALTER_USER_TABLE_ColumnDetails = 
        " ADD NEW_COLUMN_NAME TEXT";

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
    {
 // strTableList - Array of Table Names
       for(int i=0;i<strTableList.length;i++)
       {
       db.execSQL("ALTER TABLE "+strTableList[i]+ALTER_USER_TABLE_ColumnDetails);
       }
    }
private static final String ALTER\u USER\u TABLE\u ColumnDetails=
“添加新的列名称文本”;
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion)
{
//strTableList-表名数组

对于(int i=0;iSQL inhericance.

(至少在postgresql中工作) 如果所有表都继承一个基表,则向基表中添加一列会将其添加到所有其他表中。(在获得数据库中每个表的锁后)

如果您的DBMs不执行这种sql继承,那么我认为“不”:


获取表列表并编写循环脚本(或使用查找和替换)。

如果使用MS SQL,则可以直接在SQL中执行,例如:

EXEC sp_MSforeachtable '
if not exists (select * from sys.columns
            where object_id = object_id("?")
            and name = "NewColumnName")
 begin
     ALTER TABLE ? ADD NewColumnName varchar(50) NULL;
 end
 ';

我认为这不可能在不循环表的情况下完成。您使用的是什么RDBMS?