问题标签 [upsert]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
13550 浏览

mysql - 插入mysql数据库,如果记录已经存在,则更新

可能重复:
如果存在,我如何在 MySQL 中更新,如果不插入(又名 upsert 或合并)?

如何插入mysql数据库,如果记录已经存在,那么更新...我知道这个页面上有一个解决方案:http: //dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate .html

同胞表

如果我想在这个表中添加另一个兄弟姐妹,sql 会是什么。

0 投票
2 回答
10966 浏览

redis - 如何在 Redis 中更新(替换)操作?(作为流水线)

更新插入(替换)

  • 如果存在则更新
  • 如果不存在则插入

(使用主键作为流水线)

0 投票
1 回答
1707 浏览

sql - 在 SQL Server 中不合并的情况下 Upsert 5000+ 行的最有效/最佳实践是什么?

我有一个每秒接收大约 50 次点击的 Web 应用程序,每次点击时,我都会在中央 SQL Server 数据库中插入大约 10 条记录。大约每 3 秒一次,我为单个入站连接插入 5000 多行。

目前我有一个以 XML 作为参数的存储过程。我从我的 XML 中插入一个行字段不匹配的主表,然后用我的 XML 中的值更新整个表。

无论如何,操作并不慢,但我真的很想知道最好的方法。我在 SQL Server 2005 上运行,所以我没有 MERGE 操作。

0 投票
6 回答
85440 浏览

mysql - 如何执行 UPSERT 以便我可以在更新部分同时使用新值和旧值

愚蠢但简单的例子:假设我有一个表“项目”,我在其中保存收到的项目的总数。

项目名称是这里的主键。当我收到数量 X 的物品 A 时,如何实现以下目标。

如果该项目不存在,我为项目 A 插入一个新记录并将库存项目设置为 X,如果存在库存项目为 Y 的记录,则库存项目的新值为 (X + Y)

我的问题是我的实际表中有多个列。在更新部分编写多个选择语句是个好主意吗?

当然我可以在代码中做到这一点,但有更好的方法吗?

0 投票
2 回答
8030 浏览

sql - 将 MERGE INTO 与 Scope_IDENTITY 一起使用

Merge into使用insert以下语句时,Scope_Identity返回正确的代理键信息。但是,当update两者都执行Scope_Identity@@Identity返回下一个可用的代理键时。当我添加 时,我在和output上都得到了一个空值。updateinsert

如何在update和上返回代理键insert

0 投票
6 回答
14425 浏览

sql - 在 MS-access 中更新插入

我需要为 MS-Access 2000 编写一个 SQL 查询,以便在存在时更新行,如果不存在则插入。(我相信这被称为“upsert”)

IE

如果行存在...

如果它不存在...

这可以在一个查询中完成吗?

0 投票
3 回答
1093 浏览

php - 如果数据存在则如何更新否则插入新数据(多行)

我需要创建一个插入和更新语句,当今天的日期不在数据库中时,它将插入,否则它将更新从今天开始的数量(来自 excel [这部分我已经完成])。

但是,有很多行需要插入和更新。

1)它将检查数据库中的最后4天,如果不包括今天,它将只插入今天的数据并更新最后3天的数据。另一方面,如果包含今天它只会更新。

PS:我曾尝试使用INSERT... ON DUPLICATE KEY UPDATE,但只有 1 行受到影响。

if else 语句,当我使用它时,它只插入一行数据,其余的只是进行更新。

可以给我一些建议或例子。

0 投票
3 回答
1288 浏览

c# - UPSERT 进入具有动态表名的表

提供任何更好的将 UPSERT 插入表格的方法:

  • 以 ~1 行/秒的速度插入数据
  • 表名是动态的,使用传递给它的 ObjectID 参数生成

以下过程抛出:“ORA-00942:表或视图不存在”

  • 显然 MERGE 不起作用,因为 TableName 不能是动态的???
  • 我是一个新手,我的第三个月的编码,我通过 STACKOVERFLOW 和谷歌搜索了 3 天,尝试了各种有趣和绝望的解决方案......如果你找到一个非常相关的链接,我将不胜感激。
0 投票
1 回答
1547 浏览

drupal - Drupal 7 DBTNG:使用 db_merge() 时如何检索最后一个 INSERT id

使用 db_merge 时,如果进行了 INSERT,则似乎无法检索最后一个插入 ID。

如果进行了插入,则 MergeQuery::execute() 返回 MergeQuery::STATUS_INSERT,而不是像 InsertQuery::execute() 那样返回插入 ID。

使用 db_merge 时是否有一种优雅的方法来检索最后一个插入 ID?

资料来源: http : //api.drupal.org/api/drupal/includes--database--query.inc/function/MergeQuery%3A%3Aexecute/7 http://api.drupal.org/api/drupal/includes --database--query.inc/function/MergeQuery%3A%3Aexecute/7

0 投票
1 回答
854 浏览

deadlock - SQL Server 2008 R2 中的死锁

服务器:SQL Server 2008R2 客户端:Excel/ADO - 8 个客户端 服务器硬件:8 核/16GB 内存/操作系统:WinServer 2008SR2

插入/更新和合并/匹配存储过程都发生死锁。

我在这里阅读了很多关于插入/更新的内容,因此,我已将插入/更新更改为合并/匹配,但我仍然收到非常频繁的死锁错误(大约每 10 分钟一次)来自运行的 8 个客户端批处理模式要求以每分钟 2 次的速率进行更新。

相比之下,每个客户端每分钟向另一个表插入大约 20,000 个项目,完全没有问题。

我希望在解决这些死锁问题方面得到一些帮助,因为我认为这样一个微不足道的 8 个客户端(尤其是 Excel/ADO/VBA)应该能够对这个数据库施加压力!

另请注意,我不直接通过客户端发出任何 SQL 命令,所有 sql 命令都是通过存储过程调用的。

我现在的SP: