2008-11-20 2 views
17

Я пытаюсь выполнить простой INSERT и вернуть идентификатор (автоинкрементный первичный ключ). Я попыталсяПоддерживает ли SQLite SCOPE_IDENTITY?

cmd.CommandText = "INSERT INTO Prototype (ParentID) VALUES (NULL); SELECT SCOPE_IDENTITY();"; 

и я получаю следующее сообщение об ошибке

EnvironmentError: SQLite error 
no such function: SCOPE_IDENTITY

ли SQLite поддержка scope_identity?
Если да, то как его использовать?
Если нет, то каковы мои (предпочтительно «поточно-безопасные») альтернативы?

ответ

16

Проверьте FAQ. Функция sqlite3_last_insert_rowid() сделает это. Тем не менее, осторожны с триггерами.

+0

ли sqlite3_last_insert_rowid() поточно? Ограничено ли оно текущей областью, например SCOPE_IDENTITY? – Greg 2008-11-20 07:56:49

+1

Прочитайте документацию. Последний идентификатор текущего соединения. – 2008-11-20 08:14:48

23

Если вы не используете интерфейс C для программирования и хотите, чтобы сделать процесс из командной SQL попробовать: SELECT last_insert_rowid()

http://www.sqlite.org/lang_corefunc.html

Смежные вопросы