SQLite. Cómo obtener el valor de incremento automático clave principal después de Insertar, aparte de last_insert_rowid ()?

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

  •  27-09-2019
  •  | 
  •  

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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top