我想在android中创建一列AUTOINCREMENT值。我尝试了以下的方式,但它失败了。我想让列在添加新记录时自动递增。
当我向game_id添加“AUTOINCREMENT”时,我收到异常“无法将只读数据库从版本0升级到25”。
db.execSQL("CREATE TABLE Games (" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT," +
"game_id INTEGER **AUTOINCREMENT**," +
"title TEXT" +
");");
答案 0 :(得分:2)
在SQLite中,autoincrement关键字仅修改选择下一个空整数主键的算法的行为。它的行为并不像你想要的那样。抱歉。 我能想出的唯一解决方案是以编程方式执行您想要的操作并将唯一约束添加到game_id字段
`CREATE table Games (_id integer primary key autoincrement, game_id integer unique, title text)`;
这适用于sqlite3,但如果输入表中已有的内容,则应尝试捕获错误。另一种可能性,取决于你所追求的是,创建另一个表。
答案 1 :(得分:0)
如果有人在寻找解决方案,我会这样做。
使用insert(rowdID)中返回的值并对必填字段进行更新。
long rowID = db.insert(games, "url",
initialValues);
if (rowID > 0) {
ContentValues values = new ContentValues();
values.put("game_order", rowID);
String[] args = new String[]{String.valueOf(rowID)};
db.update(games, values, "_id=?", args);
}