Sqlite. Como obter o valor da chave primária de incremento automático após a inserção, exceto last_insert_rowid ()?
Pergunta
Estou usando o SQLITE3 com o Flask Microframework, mas essa pergunta diz respeito apenas ao lado do SQLite.
Aqui está um trecho do código:
g.db.execute('INSERT INTO downloads (name, owner, mimetype) VALUES (?, ?, ?)', [name, owner, mimetype])
file_entry = query_db('SELECT last_insert_rowid()')
g.db.commit()
o downloads
A tabela tem outra coluna com os seguintes atributos: id integer primary key autoincrement,
Se duas pessoas escreverem ao mesmo tempo, o código acima poderá produzir erros.
As transações podem ser confusas. Em Sqlite, existe uma maneira elegante de retornar a chave primária gerada após fazer uma inserção?
Solução
A maneira como você está fazendo isso é válida. Não haverá um problema se o corte acima for executado simultaneamente por dois scripts. last_insert_rowid()
Retorna o RowID da instrução Insert mais recente para a conexão que a chama. Você também pode conseguir o Rowid fazendo g.db.lastrowid
.