方镁石。插入后如何获取自动增量主键的值,除了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()?的主要内容,如果未能解决你的问题,请参考以下文章

SQL java获取分配给自动递增主键的值[重复]

如何获取数据表中自增主键的值

如何使用 Hibernate 在 MySQL 中获取自增主键值

在表中插入主键的问题

mybatis记录随便保存数据获取自增主键的值

Django:关于自动递增主键的最佳实践