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