问题标签 [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 投票
7 回答
15956 浏览

c# - 在 sql server compact edition 上执行插入或更新(upsert)

我有使用 sqlserver 精简版和实体框架进行数据访问的 c# 项目。我需要向数据库插入或更新大量行,5000+ 或更多,所以如果密钥存在,如果不插入则更新记录。我找不到使用紧凑版和 EF 执行此操作的方法,但性能不佳,即在核心 i7 计算机上花费 2 分钟以上。我曾尝试搜索记录以查看它是否存在,如果不存在则插入或更新,如果存在,则搜索是杀手锏。我已经尝试编译搜索查询,但只带来了很小的改进。我尝试过的另一件事是将记录插入到 try catch 中,如果它更新失败,但这会迫使我在每条记录上保存更改以获取异常,而不是在最后,这是一个性能杀手。显然我不能 t 使用存储过程,因为它是精简版。此外,我还研究过以某种方式直接在数据库上执行 t-sql,但紧凑中缺少进程语句似乎排除了这一点。我已经在世界各地寻找想法。如果我可以过度表达部署优势和防止用户挖掘数据库的能力,我真的很想使用紧凑型。任何建议将不胜感激。

谢谢

0 投票
7 回答
22442 浏览

mysql - MySQL "good" way to insert a row if not found, or update it if it is found

Very often, I want to run a query on one of my users where I want a row stored and associated with that user, in a 1-to-1 relationship. So let's say (this is just an arbitrary example), that I have a table that keeps track of a user's car, along with some info about the car. Each user can have either 0 or 1 cars. If the user has no car, there is no entry in the table for that user.

cars table (again, just an example): id, user_id, car_make, car_model

So, when I update this table, I always end up doing something like this (pseudo-code):

How can I make this into one elegant statement that works "atomically"? What happens if, in another process, the row is REMOVED between the SELECT and UPDATE statements? My UPDATE statement will fail where the INSERT statement should have run. And I feel like I need to do two similar (but different) statements to accomplish the same thing! What I need is some statement that will assure me that the data I want exists in the table, especially when I only want 1 row that satisfies my requirement. For example, it might be something like (this is totally made-up of course):

That way, if user_id of 5 exists already, it will be updated, otherwise, it will be inserted. Also, if I changed the requirements, for example to say that each user can have zero or one cars of a given car_make, then I could further specify that:

I hope my question makes sense! How can I improve this basic insert-if-not-found or update-if-found operation that comes up so often? Thanks for any help!

0 投票
5 回答
16724 浏览

sql - 如何实现条件 Upsert 存储过程?

我正在尝试实现您的基本 UPSERT 功能,但有一个转折:有时我不想实际更新现有行。

本质上,我正在尝试在不同的存储库之间同步一些数据,而 Upsert 函数似乎是要走的路。因此,主要基于Sam Saffron 对这个问题的回答,以及其他一些研究和阅读,我想出了这个存储过程:

(注意:我使用的是 MS SQL Server 2005,所以不能选择 MERGE 语句)

对于基本的 Upsert,我对此感到满意,但我想让实际更新以另一列的值为条件。将其视为“锁定”一行,以便 Upsert 过程不会进行进一步的更新。我可以像这样更改 UPDATE 语句:

但是随后的插入会在尝试插入已经存在但由于“锁定”而未更新的行时,会因违反唯一约束(对于 ContentID 字段)而失败。

那么这是否意味着我不再拥有经典的 Upsert,即我必须每次都选择行以确定它是否可以更新或插入?我敢打赌就是这样,所以我想我真正需要的是帮助正确处理事务隔离级别,以便程序安全执行。

0 投票
16 回答
564609 浏览

postgresql - 插入,在 PostgreSQL 中重复更新?

几个月前,我从 Stack Overflow 上的一个答案中了解到如何使用以下语法在 MySQL 中一次执行多个更新:

我现在已经切换到 PostgreSQL,显然这是不正确的。它指的是所有正确的表,所以我认为这是使用不同关键字的问题,但我不确定 PostgreSQL 文档中的哪个位置涵盖了这一点。

为了澄清,我想插入一些东西,如果它们已经存在来更新它们。

0 投票
8 回答
22752 浏览

sql-server - SSIS 中的 UPSERT

我正在编写一个在 SQL Server 2008 上运行的 SSIS 包。如何在 SSIS 中执行 UPSERT?

0 投票
2 回答
61760 浏览

sql - 如果存在,我如何在 MySQL 中更新,如果不插入(又名“upsert”或“merge”)?

有没有一种简单的方法可以INSERT在一行不存在时使用,或者UPDATE如果它存在,使用一个 MySQL 查询?

0 投票
1 回答
1046 浏览

.net - 使用 .net sqladapter 进行更新插入

有没有办法在不检索记录的情况下实现这个 upsert 功能?我正在使用 SQL Server 2005。我听说有一种方法可以使用 sqladapter 来执行此操作,而无需运行 select 语句。

我正在努力加快这个过程。有什么建议么?

干杯。

0 投票
5 回答
14039 浏览

sql - Oracle PLS-00103 错误。您如何检查现有记录并根据该条件进行更新或插入?

我需要从 SELECT 语句中检查表中是否存在记录。如果记录存在,则进行更新,否则在表上创建记录。我正在尝试,但我遇到了PLS-00103错误。

这些是我在 DBVisaulzier 中运行代码时遇到的错误:

以下是我的代码:

0 投票
3 回答
312 浏览

sql - SQL Server 2005 的首选合并方法是什么?

我主要使用Exists Method将行合并到表中,但我正在考虑切换到Row Count Method。有什么理由不这样做吗?

存在方法


行计数法


表现

计数方法似乎要快得多。在大约有 50k 行的表上,它以Exists Method时间的 1/5 计时。这些测试不是太科学,但即使保守的 +/- 15% 也是相当可观的。这是我想换的主要原因。


笔记

为了便于阅读,特意简化了这些示例。它们绝不反映我的实际情况。

0 投票
3 回答
12316 浏览

sql - 如果记录存在,则更新否则插入

我正在尝试在两个 SQL Server 2008 表之间移动一些数据。如果该记录存​​在于 Table2 中,带有来自 Table1 的电子邮件,则使用来自 Table1 的数据更新该记录,否则插入一条新记录。

在表 1 中,我有许多列;名字、姓氏、电子邮件等。

如果来自 Table1 的电子邮件存在,或者如果来自 Table1 的电子邮件在 Table2 中不存在,我不太确定如何构建查询以更新 Table2。

我尝试在 Google 上进行一些搜索,但大多数解决方案似乎都可以通过创建一些存储过程来工作。所以我想知道是否有人可能知道如何构建一个合适的查询来解决问题?