upsert相关内容

检测行是否已更新或插入

我正在使用 ON CONFLICT 进行 INSERT 来使用Java进行postgre。有什么方法可以找出 executeUpdate 是插入行还是更新行? 解决方案 您可以查看系统列 xmax 来说明区别。在这种情况下,插入行的价格为 0 。 创建表tbl( id int PRIMARY KEY,col int); 插入tbl值(1,1); 插入到tbl(id, ..
发布时间:2020-05-29 20:01:34 Java开发

在ON CONFLICT子句中使用多个flict_target

我在表 col1 , col2 中有两列,它们都是唯一索引的(col1是唯一的,因此是col2)。 我需要在插入此表时,使用 ON CONFLICT 语法并更新其他列,但是我不能在 conflict_target 条款中使用这两列。 它起作用: 插入表 中。 .. 在冲突中(col1) 做更新 设置 -在此处更新所需的列 但是如何针对多个列执行此操作,例如: ..
发布时间:2020-05-29 19:59:03 其他开发

PostgreSQL Upsert使用系统列XMIN,XMAX和其他来区分插入和更新的行

免责声明:理论问题。 这里有人问了几个有关如何区分PostgreSQL upsert 语句。 这是一个简单的示例: nd @ postgres =#创建表t(i int主键,x int); nd @ postgres =#插入t值(1,1); nd @ postgres =#插入t值(1,11),(2,22)冲突(i)的 会更新集合x =排除。i * 11 返回*, ..
发布时间:2020-05-29 19:52:22 其他开发

SELECT和INSERT之间的多列竞争条件

注意:这是如果我们现在要返回多列而不是仅返回一列,我们如何实现呢? 我们来张桌子t: create table t(tag_id int, tag text unique); 现在这就是我想要的: 每当我调用方法f_tag_id时,我都希望它返回唯一行的所有列(如果它存在于表t中),否则将其插入并返回所有列. 这些就是我为f_insert_tag 尝试过的东西 选项1: ..
发布时间:2020-05-28 19:13:00 其他开发

用单个查询替换循环以进行INSERT/UPDATE

我正在PostgreSQL中编写一个函数.它基本上执行3个步骤: 从源表中获取一条记录. 检查目标表中获取的记录的值,如果在目标表中找到记录,则使用获取的记录更新目标表的所有值,否则将获取的记录插入目标表. 如果不执行此循环,如果我编写用于插入/更新的单个查询,它会比上述方法快吗?如何通过编写单个查询而不是遍历每条记录并进行更新/插入来达到相同的结果. 我当前的方法如下 ..
发布时间:2020-05-28 19:10:58 其他开发

Oracle:重复密钥更新

我正在尝试实施从Michiel de Mare的此处找到的解决方案,以用一个更新多个记录(最好在语法意义上简单)查询.我尝试从中学习的示例代码如下: INSERT INTO table (id,Col1,Col2) VALUES (1,1,1),(2,2,3),(3,9,3),(4,10,12) ON DUPLICATE KEY UPDATE Col1=VALUES(Col1),Col2=V ..
发布时间:2020-05-21 23:17:21 数据库

如何使用NHibernate插入或更新(或覆盖)记录?

我需要向数据库写一行,无论它是否已经存在.在使用NHibernate之前,这是通过存储过程完成的.该过程将尝试更新,如果未修改任何行,则将回退到插入.之所以能奏效,是因为该应用程序不在乎记录是否存在. 使用NHibernate,我发现的解决方案要求加载实体并对其进行修改,或者删除该实体,以便可以插入新实体.应用程序必须注意记录是否已经存在.有办法解决吗? Id很重要吗? 分配的I ..
发布时间:2020-05-17 22:53:13 其他开发

重复密钥更新+子查询上的MySQL

使用此问题的答案:需要MySQL INSERT-SELECT查询具有数百万条记录的表 new_table * date * record_id (pk) * data_field INSERT INTO new_table (date,record_id,data_field) SELECT date, record_id, data_field FROM ..
发布时间:2020-05-15 05:52:39 数据库