为什么SQLite没有递增我的主键?

时间:2009-05-29 11:30:46

标签: iphone objective-c sqlite

这是我的表,

sqlStmt = [ [ NSString stringWithFormat:@"Create Table %@  (recordNo INTEGER PRIMARY KEY AUTOINCREMENT, noOfPlayer  INTEGER, smallBlindAmt INTEGER, bigBlindAmt INTEGER , startingChips INTEGER, roundTimer INTEGER) " , SETTINGS_TABLE  ] StringUsingEncoding:NSUTF8StringEncoding ] ;

插入查询,

sqlStmt = [ [ NSString stringWithFormat: @"insert into %@ values (NULL,%d, %d ,%d ,%d ,%d )" , strTableName ,noOfPlayers, SmallAmt, BigAmt, StartingChips, RoundTime ] UTF8String ] ;

获取最后一条记录的记录ID,

lastRecordNo = sqlite3_last_insert_rowid(dbObj);

lastRecordNo始终为0,我无法插入其他值,因为它提供错误主键必须是唯一的。

我无法解决与之相关的问题?

如何获取最后一个记录ID,即主键和自动增量。?

我的插入查询有问题吗?

任何人都可以通过示例创建,插入和选择查询来解释我,其中primary是自动增量吗?

3 个答案:

答案 0 :(得分:2)

不要在insert语句中显式设置主键,让系统使用自动增量分配它。

将insert语句更改为:

insert into %@ (noOfPlayer, smallBlindAmt, bigBlindAmt, startingChips, roundTimer) values (%d, %d ,%d ,%d ,%d)

答案 1 :(得分:1)

检查你的表格以获取记录。你可以使用sqlite3_mprintf。 here了解更多详情

答案 2 :(得分:0)

我真的不知道为什么它不起作用,你可能正在重新连接或什么的。 我还建议不要查找最后一行ID,因为另一个进程可能会并行增加它。