Sqlite.Как получить значение автоматического увеличения первичного ключа после вставки, кроме last_insert_rowid ()? - PullRequest
23 голосов
/ 09 августа 2010

Я использую Sqlite3 с микрофреймами Flask, но этот вопрос касается только стороны Sqlite.

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

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?

1 Ответ

30 голосов
/ 09 августа 2010

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

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