我的数据库中有多个表,名称不同,但都具有相同的结构。有没有办法可以更改结构以向每个表添加一列?
答案 0 :(得分:1)
正如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);
}
}
希望这有一些帮助。
答案 1 :(得分:1)
SQL inhericance。
(至少在postgresql中工作) 如果所有表都继承了基表,则向基表添加列会将其添加到所有其他表。 (在获取数据库中每个表的锁之后)
如果您的DBM没有执行此类sql继承,那么我认为“不”:
获取表格列表并编写循环脚本,(或使用查找和替换)。
答案 2 :(得分:0)
如果您使用的是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
';