SQLite. Comment obtenir la valeur de clé primaire Incrémentation automatique après insertion, autre que last_insert_rowid ()?

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

  •  27-09-2019
  •  | 
  •  

Question

J'utilise Sqlite3 avec Flask microframework, mais cette question concerne uniquement le côté Sqlite des choses ..

Voici un extrait du 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()

Le tableau de downloads a une autre colonne avec les attributs suivants: id integer primary key autoincrement,

Si deux personnes écrivent en même temps le code ci-dessus pourrait produire des erreurs.

Les transactions peuvent être salissant. SQLite est-il construit de manière propre de retourner la clé primaire générée après avoir fait un INSERT?

Était-ce utile?

La solution

La façon dont vous le faites est valide. Il n'y aura pas un problème si le Snipped ci-dessus est exécuté simultanément par deux scripts. last_insert_rowid() retourne le numéro de ligne de la dernière instruction INSERT pour la connexion qu'il appelle. Vous pouvez également obtenir le rowid en faisant g.db.lastrowid.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top