SQLite的。如何获得插入后自动递增主键的值,比last_insert_rowid其他()?
题
我使用SQLITE3从Flask microframework,但这个问题仅涉及的东西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,
如果两个人同时写上面的代码可能会产生的错误。
交易可能是肮脏的。在SQLite是有一个整洁的内置返回做一个INSERT后产生主键的方法是什么?
解决方案
你这样做的方式是有效的。如果上述文档片断是由两个脚本同时执行不会有问题。 last_insert_rowid()
返回调用它的连接最新的INSERT语句的ROWID。您也可以通过执行g.db.lastrowid
得到ROWID。
不隶属于 StackOverflow