SQLite. Come ottenere il valore di incremento automatico chiave primaria dopo l'inserimento che, oltre last_insert_rowid ()?
Domanda
Sto usando Sqlite3 con la boccetta microframework, ma la questione riguarda solo il lato Sqlite delle cose ..
Ecco un frammento di codice:
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 tabella downloads
ha un'altra colonna con i seguenti attributi: id integer primary key autoincrement,
Se due persone scrivono allo stesso tempo il codice di cui sopra potrebbe produrre errori.
Le transazioni possono essere disordinato. In SQLite è c'è un pulito costruito in modo di restituire la chiave primaria generata dopo aver fatto un INSERT?
Soluzione
Il modo in cui si sta facendo è valido. Non ci sarà un problema se la tagliò sopra viene eseguito contemporaneamente da due script. last_insert_rowid()
restituisce l'identificativo di le ultime dichiarazioni INSERT per la connessione che lo chiama. È anche possibile ottenere l'identificativo facendo g.db.lastrowid
.