Почему SQLite не увеличивает мой первичный ключ? - PullRequest
0 голосов
/ 29 мая 2009

Вот мой стол,

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 ] ;

получить идентификатор записи последней записи,

lastRecordNo = sqlite3_last_insert_rowid(dbObj);

lastRecordNo всегда равно 0, и я не могу вставить другие значения, потому что он дает первичный ключ ошибки должен быть уникальным.

Я не могу получить проблему, связанную с этим?

Как получить последний идентификатор записи, который является первичным ключом и автоинкрементом .?

Есть ли проблема в моем запросе вставки?

Может кто-нибудь объяснить мне пример создания, вставки и выбора запросов, где основной является автоинкремент?

Ответы [ 3 ]

2 голосов
/ 30 мая 2009

Не устанавливайте явно первичный ключ в операторе вставки, пусть система назначит его с помощью автоинкремента.

Измените оператор вставки на:

insert into %@ (noOfPlayer, smallBlindAmt, bigBlindAmt, startingChips, roundTimer) values (%d, %d ,%d ,%d ,%d)
1 голос
/ 20 июля 2011

проверьте вашу таблицу на предмет записей. Вы можете использовать sqlite3_mprintf. здесь для более подробной информации

0 голосов
/ 29 мая 2009

Я действительно не знаю, почему это не работает, возможно, вы переподключаетесь или что-то в этом роде. Я бы также предложил не искать идентификатор последней строки, так как другой процесс может увеличить его параллельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...