SQLite. Wie Wert von Autoinkrement Primärschlüssel nach Einfügen, andere als last_insert_rowid bekommen ()?

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

  •  27-09-2019
  •  | 
  •  

Frage

Ich bin mit Sqlite3 mit Flask microframework, aber diese Frage betrifft nur die SQLite-Seite der Dinge ..

Hier ist ein Ausschnitt aus dem Code:

g.db.execute('INSERT INTO downloads (name, owner, mimetype) VALUES (?, ?, ?)', [name, owner, mimetype])
file_entry = query_db('SELECT last_insert_rowid()')
g.db.commit()

Die downloads Tabelle hat eine weitere Spalte mit den folgenden Attributen: id integer primary key autoincrement,

Wenn zwei Personen in der gleichen Zeit schreiben Sie den obigen Code könnten Fehler erzeugen.

Transaktionen können chaotisch sein. In SQLite ist ein ordentlich in Art und Weise gebaut von dem Primärschlüssel erzeugte Rückkehr nach einer INSERT tun?

War es hilfreich?

Lösung

Die Art und Weise, es zu tun sind gültig ist. Es wird kein Problem sein, wenn die oben snipped von zwei Skripts gleichzeitig ausgeführt wird. last_insert_rowid() gibt die Nummer der neuesten INSERT-Anweisung für die Verbindung, die es nennt. Sie können auch die Rowid erhalten, indem g.db.lastrowid tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top