当前位置: 首页 > 知识库问答 >
问题:

如何在与外部表上的主键冲突时使用

解河
2023-03-14

我基本上是试图将数据从一个服务器上的表复制到另一个服务器上。

我在服务器上有两个相同的数据库。我创建了一个名为opentickets_aux1的外表来表示主服务器上辅助服务器上的open票证表。两者都有一个事件号主键。我可以很好地访问外表中的数据,但是当我尝试以下SQL时,我得到了“错误:没有与ON CONFLICT规范匹配的唯一或排除约束”

INSERT INTO opentickets_aux1 (SELECT * FROM opentickets)
ON CONFLICT (incidentnumber)
DO
 UPDATE SET 
 status = EXCLUDED.status,
 lastmodifieddate = EXCLUDED.lastmodifieddate

如果主键存在,我想更新几列。我将此语句用于其他查询,当它是一个本地表时,它们就会工作。有什么想法吗?

共有1个答案

后学
2023-03-14

外部表不能有主键约束,因为PostgreSQL无法强制执行其完整性。因此,不能使用INSERT。。。与外部表发生冲突

您的想法也不会处理在外部服务器上删除的行,但这可能是故意的。

如果需要外部表的本地副本,最简单的方法是在外部表上创建物化视图。

如果这不是你的愿望(也许是因为你不想复制删除),你必须使用这样的语句

INSERT INTO localtable
SELECT * FROM foreigntable f
WHERE NOT EXISTS
         (SELECT 1 FROM localtable l
          WHERE f.id = l.id);

UPDATE localtable l
SET /* all columns from f */
FROM foreigntable f
WHERE f.id = l.id
  AND (f.*) <> (l.*);
 类似资料:
  • java } cardto.java 唯一索引或主键冲突:由:org.h2.jdbc.jdbcsqlexception使用:唯一索引或主键冲突:“public.car(ID)上的主键”;SQL语句:插入到car(可转换,engine_type,IS_Brooking,IS_Function,license_plate,Manufactor,rating,seat_count,id)值(?,?,?,

  • 在使用Postgresql的Rails4.2中,我在尝试保存新的ActiveRecord对象时遇到了这个错误 PG::UniqueViolation:错误:重复键值违反唯一约束“My_table_name_pkey” 它看起来像是试图用已经存在的主键将记录插入到表中。我该怎么解决这个问题?

  • 你能给我一些关于表的主键操作在Oracle中具有时间有效性的一些看法吗? 我创建了一个具有以下架构的表 是因为Oracle实际上并不关心主键上的有效期列吗? 提前道谢!

  • 每当我的应用程序启动时,我总是得到以下错误消息: 将data.sql更改为: 生成以下错误消息:

  • 我正在使用我的laravel应用程序中的可修改包来记录对模型的编辑。 此外,我还实现了一个observer类来侦听特定的模型事件(更新、删除、创建等)并执行操作(例如清除缓存等)。使用方法在模型中实例化此观察者,如下所示: 我发现,当我在模型中定义方法时,可修改特性停止工作,并且不会记录更改—大概是因为它也使用了一个方法,该方法正被模型中的方法覆盖。 我将如何解决这个问题,以允许监听模型事件以及利

  • 当使用Spring数据@OneTomany关系和@Jointable时,如何修复外键约束冲突? 当我尝试像这样删除时: 它会抛出以下错误: 错误:表“Attachment”上的update或delete违反表“Email_Attachment”上的外键约束“Email_Attachment_Attachment_ID_FKEY”详细信息:键(id)=(6)仍然从表“Email_Attachment