我创建了一个名为DRINK的表。我最初插入了两行。升级后,我想删除这两行并将我的主键重置为1.我正在删除要删除的行但是没有运气重置主键。有人知道如何做到这一点的语法,或者甚至可能吗?这是从我的onUpdate函数调用的函数:
private void updateMyDatabase(SQLiteDatabase db, int olderVersion, int newVersion){
Log.v("DatabaseHelper","UPDATE MY DATABASE");
if (olderVersion<1){
db.execSQL("CREATE TABLE DRINK (_id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "NAME TEXT, "
+ "DESCRIPTION TEXT, "
+ "IMAGE_RESOURCE_ID INTEGER);");
insertDrink(db,"latte","Espresso and Steamed Milk",R.drawable.latte);
insertDrink(db, "cappuccino", "This a Cappuccino", R.drawable.cap);
}
if (olderVersion < 2){
db.execSQL("delete from DRINK");
db.execSQL("alter table AUTO_INCREMENT =1"); //*** NEED HELP HERE***
insertDrink(db, "coff", "Espresso and Steamed Milk", R.drawable.latte);
}
}
我在网上找到了这段代码,但它没有用。谢谢。
db.execSQL("alter table AUTO_INCREMENT =1");
答案 0 :(得分:2)
删除行不会重置ROWID。
SQLite文档声明:
SQLite跟踪表所持有的最大ROWID 使用特殊的SQLITE_SEQUENCE表。 SQLITE_SEQUENCE表是 每当普通表时自动创建和初始化 包含一个AUTOINCREMENT列。的内容 可以使用普通的UPDATE,INSERT修改SQLITE_SEQUENCE表, 和DELETE语句。但是对这个表进行修改会 可能扰乱AUTOINCREMENT密钥生成算法。
这个sql应该做你需要的:
UPDATE SQLITE_SEQUENCE SET seq = <n> WHERE name = <table>
其中n是您要设置的序列,table是您的表名