upsert相关内容

SQL Server 2005 中的原子 UPSERT

在 SQL Server 2005 中执行原子“UPSERT"(存在时更新,否则插入)的正确模式是什么? 我在 SO 上看到很多代码(例如,请参阅 检查是否一行存在,否则插入) 具有以下两部分模式: 更新...从 ...WHERE-- 这里有竞争条件风险如果@@ROWCOUNT = 0插入 ... 或 IF (SELECT COUNT(*) FROM ... WHERE ) = ..
发布时间:2021-11-30 14:46:07 数据库

如果表中的一行不存在,我如何更新或插入它?

我有以下计数器表: 创建表缓存(关键文本 PRIMARY KEY,代数); 如果相应的行尚不存在,我想增加其中一个计数器,或将其设置为零.有没有办法在标准 SQL 中没有并发问题的情况下做到这一点?操作有时是事务的一部分,有时是独立的. 如果可能,SQL 必须在未修改的情况下在 SQLite、PostgreSQL 和 MySQL 上运行. 搜索产生了几个想法,这些想法要么受到并发问 ..
发布时间:2021-11-20 22:24:17 数据库

SQLite 插入 - 重复密钥更新(UPSERT)

MySQL 有这样的东西: INSERT INTO 访问(ip,命中)值 ('127.0.0.1', 1)ON DUPLICATE KEY UPDATE hits = hits + 1; 据我所知 SQLite 中不存在此功能,我想知道是否有任何方法可以在不必执行两个查询的情况下达到相同的效果.另外,如果这是不可能的,你更喜欢什么: SELECT +(插入或更新)或 更新(+ INSE ..
发布时间:2021-11-20 21:22:58 数据库

如何执行 UPSERT 以便我可以在更新部分使用新旧值

愚蠢但简单的例子:假设我有一个“项目"表,我在其中保存收到的项目总数. Item_Name Items_In_Stock 项目名称是这里的主键.当我收到数量为 X 的物品 A 时,如何实现以下目标. 如果该项目不存在,我为项目 A 插入一个新记录并将库存项目设置为 X,如果存在库存项目为 Y 的记录,则库存项目的新值是 (X +是) INSERT INTO `item`(`item_n ..
发布时间:2021-11-20 21:22:15 数据库

插入 MySQL 表或更新(如果存在)

我想向数据库表中添加一行,但如果存在具有相同唯一键的行,我想更新该行. 例如: INSERT INTO table_name (ID, NAME, AGE) VALUES(1, "A", 19); 假设唯一键是ID,在我的数据库中,有一行ID = 1.在这种情况下,我想用这些值更新该行.通常这会出错. 如果我使用 INSERT IGNORE 它会忽略错误,但它仍然不会更新. 解决 ..
发布时间:2021-11-20 21:03:28 数据库

在 MongoDB 文档中插入匹配条件的数组元素?

根据 我该怎么做更新 MongoDB 文档中匹配条件的数组元素? 我想向上插入数组元素,所以如果不匹配则插入它,否则更新它. 我尝试了该问题的答案,如果数组元素已经存在,它可以正常工作.如果该元素不存在,则在数组字段下创建“$"的子元素. 我的Mongo结构如下: 小部件(集合)- 姓名--属性(数组)- 姓名- 价值 我的应用程序从 WebService 调用获取小部件名称 ..
发布时间:2021-11-18 03:42:41 其他开发

Postgresql SQL 抛出不明确的列错误

我的 Postgres 数据库中有下表 CREATE TABLE "public"."zuffs"(“哈希" bigint 非空,"zuff" BIGINT 非空,“纬度"整数非空,“lng"整数非空,“天气"整数默认值 0,“过期"整数默认值 0,“客户"INTEGER DEFAULT 0,约束“zuffs_hash"主键(“hash")) WITH (oids = false); 我想向其 ..
发布时间:2021-09-14 20:26:56 其他开发

插入 + 更新/向上插入?

快速问题:在 mongo(或任何与此相关的数据库)中,upsert 查询是否是插入 + 更新查询的更好替代方法. upsert -> 如果找到并更新文档,则插入一个新文档.我读过文章说这让生活更轻松并且性能有效.(本质上是两个操作)insert -> 检查文档是否存在,如果不存在 -> 插入文档否则抛出错误.( 2 次操作)update 将与插入相反.(再次操作 2 次) 从这个 up ..
发布时间:2021-09-14 20:26:53 其他开发

INSERT ... ON CONFLICT DO UPDATE 中的不明确列引用

给定一张桌子: CREATE TABLE IF NOT EXISTS test.“TestCounter";(“id"文本主键,“计数"整数); 如果记录已经存在,我想插入一条记录并增加计数器 INSERT INTO 测试.“TestCounter"(“身份证")值('id-0')冲突时(“id")做更新设置“计数"=(“计数"+ 1)返回“计数" 目前我收到此错误: 错误:列引用“计数 ..
发布时间:2021-09-14 20:26:50 其他开发

INSERT ON CONFLICT DO NOTHING 和 SELECT 之间的竞争条件

在给定默认事务隔离(已提交读)的情况下,在 INSERT ... ON CONFLICT DO NOTHING 语句之后的 SELECT 查询是否总能找到一行? 我想在一个表中INSERT-或-SELECT 一行,然后在第二个表中插入行时引用它.由于 RETURNING 不适用于 ON CONFLICT,我到目前为止使用了 一个简单的 CTE,即使该行已经存在,它也应该始终为我提供标识列值: ..

Postgres ON CONFLICT 设置列引用不明确

我有一张桌子: 创建表 c (e 文本不为空,m 文本不为空,p 数字不为空,主键 (e, m)); 我想做插入或更新,将 p 添加到现有值: insert into c values (...) on conflict (e, m) do update setp = p + 排除.p 然后我得到一个错误: 错误:列引用“p"不明确 它是如何模棱两可的?我应该如何编写插入以将 ..
发布时间:2021-09-14 20:26:41 其他开发

如何实现有条件的 Upsert 存储过程?

我正在尝试实现您的基本 UPSERT 功能,但有一点不同:有时我不想实际更新现有行. 从本质上讲,我正在尝试在不同存储库之间同步一些数据,而 Upsert 函数似乎是要走的路.所以主要基于 Sam Saffron 对这个问题的回答,以及其他一些研究和阅读,我想出了这个存储过程: (注意:我使用的是 MS SQL Server 2005,所以 MERGE 语句不是一个选项) 创建程序 ..
发布时间:2021-08-26 18:53:49 数据库

SSIS 中的 UPSERT

我正在编写一个在 SQL Server 2008 上运行的 SSIS 包.你如何在 SSIS 中执行 UPSERT? 如果密钥不存在插入别的如果数据改变更新万一万一 解决方案 参见 SQL Server 2008 - 使用来自 SSIS 的合并.我已经实现了这样的东西,这很容易.仅使用 BOL 页面 使用 MERGE 插入、更新和删除数据足以让我前进. ..
发布时间:2021-08-25 20:27:07 数据库

在 SQL Server 上插入更新存储过程

我编写了一个存储过程,如果记录存在,它将进行更新,否则将进行插入.它看起来像这样: update myTable set Col1=@col1, Col2=@col2 where ID=@ID如果@@rowcount = 0插入到 myTable (Col1, Col2) 值 (@col1, @col2) 我以这种方式编写它背后的逻辑是,更新将使用 where 子句执行隐式选择,如果返回 0, ..
发布时间:2021-08-25 18:54:26 数据库

在插入 SQL Server 中使用 if 条件

我的代码中有以下语句 INSERT INTO #TProductSales (ProductID, StockQTY, ETA1)值(@ProductID、@StockQTY、@ETA1) 我想做类似的事情: IF @ProductID 存在 THEN更新#TProductSales别的插入#TProductSales 有没有办法做到这一点? 解决方案 模式是(没有错误处理): ..
发布时间:2021-08-25 18:46:37 数据库

正确使用 SQLite ON CONFLICT 子句

我有一个 SQLite 数据库,其中包括下表. 如果不存在偏差则创建表(数据整数非空,链接整数默认值 0,偏置类型整数,忽略整数默认值 0,停止 INTEGER DEFAULT 0,封装 INTEGER DEFAULT 0,访问整数默认值 0,废料 INTEGER DEFAULT 0,约束 pk_bias_mix 主键(数据,链接,bias_type)); 约束 pk_bias_mix 用于确 ..
发布时间:2021-08-23 19:48:36 数据库