SQLite. Come ottenere il valore di incremento automatico chiave primaria dopo l'inserimento che, oltre last_insert_rowid ()?

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

  •  27-09-2019
  •  | 
  •  

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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top