mysql - 如果使用原始 ActiveRecord::Base.connection(),如何获取最后插入的主键值?

标签 mysql ruby-on-rails ruby activerecord

此代码在我的本地 RoR/Windows 7(64 位)上运行:

sql = ActiveRecord::Base.connection()
last_pk = sql.insert("insert into manual (name) values ('hello new value')")
puts 'last_pk=', last_pk

但始终显示“0”。

由于各种原因,我无法在这种情况下使用 ActiveRecord。

(注意:以上代码在我的共享主机上运行良好。 另请注意:为了使任何数据库连接正常工作,我必须根据 StackOverflow.com 上的另一个答案将 mysql5\bin\libmySQL.dll 替换为不同的 DLL。)

最佳答案

如果有疑问从mysql获取:

SELECT LAST_INSERT_ID()

将返回用于插入的最后一个 ID。如果您进行多线程处理,请务必将这两个语句锁定在一个同步块(synchronized block)中。

关于mysql - 如果使用原始 ActiveRecord::Base.connection(),如何获取最后插入的主键值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2394359/

相关文章:

ruby-on-rails - 在 Rails 应用程序中重新定义 $stdout 和 $stderr 的副作用

ruby-on-rails - #<Class :0x007f099c303390> 的未定义方法 `enum'

php 图像类型 blob 不会显示

mysql - Perl 和 MySql 中的 utf8 编码

mysql - 尝试链接 phoenix 和 MySQl compile.gettext 错误

ruby-on-rails - 检查 model.save 上对象的错误

ruby - ruby 的持续时间

mysql - '2' 中的未知列 'order clause'

ruby-on-rails - 覆盖 Rails API 中错误的默认 json 格式

ruby-on-rails - Rails 'rake task' 使用 nohup 在 ‘RAILS_ENV=production' 中执行