2016-11-22 66 views
0

ON衝突DO UPDATE/DO NOTHING功能在PostgreSQL 9.5。 創建服務器FOREIGN TABLE即將在PostgreSQL 9.2版本。關於衝突DO UPDATE/DO NOTHING NOT FOR FOREIGN TABLE

當我使用ON衝突不需更新外部表它不工作, 但是當我跑步時對正常表相同的查詢是working.Query如下。

// 對於正常表

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是外部表和應用是正常的表

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:ERROR:有沒有獨特的或排他條件相匹配的ON衝突規範

任何一個可以解釋爲什麼會出現這種情況?

回答

1

有外國表沒有任何限制,因爲PostgreSQL不能由國外服務器上定義的約束做國外服務器–上執行數據的完整性。

要實現您想要做的事情,您必須堅持使用「傳統的」(例如this code sample)。