方镁石。插入后如何获取自动增量主键的值,除了last_insert_rowid()?
Posted
技术标签:
【中文标题】方镁石。插入后如何获取自动增量主键的值,除了last_insert_rowid()?【英文标题】:Sqlite. How to get value of Auto Increment Primary Key after Insert, other than last_insert_rowid()? 【发布时间】:2011-03-27 09:39:36 【问题描述】:我正在使用带有 Flask 微框架的 Sqlite3,但这个问题只涉及 Sqlite 方面的事情。
这是一个sn-p的代码:
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 (sqlite.org/lang_corefunc.html) 的文档;它位于数据库连接的本地。 谢谢。是的,我正在使用 object-c How to retrieve inserted id after inserting row in SQLite using Python?的可能重复 【参考方案1】:你这样做的方式是有效的。如果上面的片段由两个脚本同时执行,就不会有问题。 last_insert_rowid()
返回调用它的连接的最新 INSERT 语句的 rowid。你也可以通过g.db.lastrowid
获取rowid。
【讨论】:
以上是关于方镁石。插入后如何获取自动增量主键的值,除了last_insert_rowid()?的主要内容,如果未能解决你的问题,请参考以下文章