SQLite. Cómo obtener el valor de incremento automático clave principal después de Insertar, aparte de last_insert_rowid ()?
Pregunta
Estoy utilizando Sqlite3 con el frasco microframework, pero esta cuestión sólo se refiere a la parte de SQLite cosas ..
A continuación se muestra un fragmento de 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()
La tabla downloads
tiene otra columna con los siguientes atributos: id integer primary key autoincrement,
Si dos personas escriben al mismo tiempo, el código anterior podría producir errores.
Las transacciones pueden ser un poco incómodo. En SQLite es que hay una ordenada construida en forma de devolver la clave primaria generada después de hacer un INSERT?
Solución
La forma en que está haciendo es válido. No habrá un problema si el cortó anterior se ejecuta simultáneamente por dos guiones. last_insert_rowid()
Devuelve el identificador de la última declaración INSERT para la conexión que lo llama. También puede obtener el rowid haciendo g.db.lastrowid
.