sqliteの。 last_insert_rowid以外の挿入、(後に自動インクリメント主キーの値を取得する方法)?

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

  •  27-09-2019
  •  | 
  •  

質問

私は、フラスコのマイクロフレームでsqlite3のを使用していますが、唯一この質問への懸念物事ののSQLite側..

ここでは、コードのスニペットがあります:

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

downloadsテーブルは、以下の属性を持つ別の列を有している:id integer primary key autoincrement,

2人が同時に書き込む場合は、上記のコードは、エラーが発生する可能性があります。

トランザクションが乱雑することができます。 SqliteをできちんとしたINSERTを実行した後に生成された主キーを返す方法で構築?あり

役に立ちましたか?

解決

あなたがそれをやっている方法が有効です。上記のスニップは、2つのスクリプトで同時に実行された場合、問題があってはなりません。 last_insert_rowid()はそれを呼び出す接続するための最新のINSERT文のROWIDを返します。またg.db.lastrowidを行うことでROWIDを取得することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top