[英]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.