2010-08-09 1 views
19

Я использую Sqlite3 с Колба микрокаркас, но этот вопрос касается только Sqlite сторона вещей ..Sqlite. Как получить значение Auto Increment Primary Key после Insert, кроме last_insert_rowid()?

Вот фрагмент кода:

g.db.execute('INSERT INTO downloads (name, owner, mimetype) VALUES (?, ?, ?)', [name, owner, mimetype]) 
file_entry = query_db('SELECT last_insert_rowid()') 
g.db.commit() 

Таблица downloads имеет еще один столбец со следующим атрибуты: id integer primary key autoincrement,

Если два человека пишут одновременно, код выше может привести к ошибкам.

Сделки могут быть беспорядочными. В Sqlite есть аккуратный встроенный способ возврата первичного ключа, созданного после выполнения INSERT?

+2

Пожалуйста, ознакомьтесь с документацией для last_insert_rowid (http://www.sqlite.org/lang_corefunc.html); он локален для подключения к базе данных. –

+0

Спасибо. Да, я использую object-c – arachide

+1

возможный дубликат [Как получить вставленный идентификатор после вставки строки в SQLite с помощью Python?] (Http://stackoverflow.com/questions/6242756/how-to-retrieve-inserted-id- после вставки-строки-в-SQLite-помощь-Python) – Hans

ответ

27

То, как вы это делаете, действительно. Не будет проблем, если вышеупомянутый снимок будет выполняться одновременно двумя сценариями. last_insert_rowid() возвращает rowid последнего оператора INSERT для вызывающего его соединения. Вы также можете получить rowid, выполнив g.db.lastrowid.

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