我在Flask微框架中使用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,
downloads
id integer primary key autoincrement
如果两个人同时写,上面的代码可能会产生错误。
交易可能会很混乱。在Sqlite中,是否有一种整洁的内置方法可以返回执行INSERT之后生成的主键?
你这样做的方式是有效的。如果上面的片段被两个脚本同时执行,则不会有问题。last_insert_rowid()返回调用它的连接的最新INSERT语句的rowid。你还可以通过执行以下操作获取rowid g.db.lastrowid。
last_insert_rowid()
rowid g.db.lastrowid