gpt4 book ai didi

database - ON CONFLICT DO UPDATE/DO NOTHING 不在 FOREIGN TABLE 上工作

转载 作者:搜寻专家 更新时间:2023-10-30 23:37:06 24 4
gpt4 key购买 nike

ON CONFLICT DO UPDATE/DO NOTHING 特性将在 PostgreSQL 9.5 中出现。创建ServerFOREIGN TABLE 将在 PostgreSQL 9.2 版本中推出。

当我对FOREIGN 表 使用ON CONFLICT DO UPDATE 时,它不起作用,但是当我在普通表上运行相同的查询时它正在工作。下面给出了查询。

//对于普通表

INSERT INTO app
(app_id,app_name,app_date)
SELECT
p.app_id,
p.app_name,
p.app_date FROM app p
WHERE p.app_id=2422
ON CONFLICT (app_id) DO
UPDATE SET app_date = excluded.app_date ;

O/P:查询成功返回:一行受影响,执行时间 5 毫秒。

//对于外表概念

//foreign_app 是外部表,app 是普通表

INSERT INTO foreign_app
(app_id,app_name,app_date)
SELECT
p.app_id,
p.app_name,
p.app_date FROM app p
WHERE p.app_id=2422
ON CONFLICT (app_id) DO
UPDATE SET app_date = excluded.app_date ;

O/P:错误:没有与 ON CONFLICT 规范匹配的唯一或排除约束

谁能解释为什么会这样?

最佳答案

外部表没有约束,因为 PostgreSQL 无法在外部服务器上强制执行数据完整性——这是通过在外部服务器上定义的约束来实现的。

要实现您想做的事情,您必须坚持使用“传统”方法(例如 this code sample)。

关于database - ON CONFLICT DO UPDATE/DO NOTHING 不在 FOREIGN TABLE 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40741461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com