簡體   English   中英

PostgreSQL:更新…插入錯誤?

[英]PostgreSQL: UPDATE … ON MISSING INSERT?

PostgreSQL具有“ INSERT ... ON CONFLICT UPDATE ”構造,但是在我的查詢中,大多數情況下我需要UPDATE。

因此,我不希望數據庫嘗試插入然后僅進行更新,我希望數據庫嘗試進行UPDATE並且如果記錄不存在-將INSERT

可能嗎? 會提高性能嗎?

它將提高性能,並且還取決於您將擁有的代碼。 如果構造表,然后使用單獨的函數檢查表是否包含要添加的數據或不添加數據,然后進行相應的操作(如果存在,則插入否則為no)。 在這種情況下,您的代碼將占用一部分內存。 當處理海量數據時,此方法非常有用,可以節省一小部分內存

INSERT INTO hundred(name, name_slug, status) 
SELECT DISTINCT name, name_slug, status 
FROM hundred 
WHERE NOT EXISTS ( 
 SELECT 'X' 
 FROM temp_data 
 WHERE temp_data.name = hundred.name AND temp_data.name_slug = hundred.name_slug  AND temp_data.status = status );

為了簡化,“ where”語句是執行所需操作的關鍵點:

   INSERT INTO table (id, field, field2)
   SELECT 3, 'C', 'Z'
   WHERE NOT EXISTS (SELECT 1 FROM table WHERE id=3);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM