mysql - Datamapper 是否支持 'On Duplicate Key Update' 或其他更新插入技术?

标签 mysql ruby datamapper

我正在使用 Ruby 和 Datamapper 将大量记录加载到 MySQL 数据库中。这些记录主要是插入的,但也有相当数量的更新。我基本上想“更新”数据库中这些记录的所有列。我能找到的唯一选项是:

1) 查询一条记录。如果存在,请更新它。如果没有,创建一个记录。 (总是一个额外的查询) 2) 尝试创建一个新记录。捕获重复键错误。查询现有记录。更新那些记录。 (有更新时,额外查询2次)

我想利用 MySQL 的 On Duplicate Key Update,因为它看起来效率更高。有没有办法在 Datamapper 中执行此操作?还有其他建议吗?

最佳答案

您应该能够为此使用first_or_create。来自docs :

zoo = Zoo.first_or_create(:name => 'The Glue Factory')

我没有通过在 do/do_mysql 中查找 On Duplicate Key Update 得到任何匹配项 |或 dm-mysql-adapter来源,所以它可能不支持它。如果效率对于需要此功能来说非常重要,您可能需要求助于纯 SQL。

关于mysql - Datamapper 是否支持 'On Duplicate Key Update' 或其他更新插入技术?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12099356/

相关文章:

mysql - 从查询中排除分配的文章

mysql - 无法在mysql查询中实现where子句

MySQL:将所有日期向前移动,因此最大日期=现在

ruby - Ruby 的假文件系统

ruby - 如何检查 Ruby 中闭括号、圆括号或方括号的有效性

javascript - 使用自定义局部变量从 javascript 渲染部分

ruby - Sinatra 和 Datamapper 无法将数组保存为数据类型对象

php - 使用 PHP 对 sql 结果进行排序和计数

ruby - 如何为 PostgreSQL 将 DataMapper 字符串长度设置为无限制

ruby-on-rails - Rails 中 DataMapper 对象的替代序列化