Sqlite. Como obter o valor da chave primária de incremento automático após a inserção, exceto last_insert_rowid ()?

StackOverflow https://stackoverflow.com/questions/3442033

  •  27-09-2019
  •  | 
  •  

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top