0
我正在使用Postgres 9.6。我想更新記錄如果什麼關於它是不同的,但保持不變,如果不是。Postgres UPSERT - 如果所有數據相同,不更新?
這是我的SQL,稍作簡化,因爲我的桌子實際上有更多的領域(通過psycopg2運行):
query = "INSERT INTO cap(scheme, year, code) "
query += "VALUES(%s, %s, %s) "
query += "ON CONFLICT DO NOTHING"
cursor.execute(query, ('abc', 2015, 'twu'))
但是,如果我跑了兩次完全相同的價值觀,我得到兩條記錄數據庫。
如何修改此查詢,以便提供完全相同的值不會創建新記錄?
我試過看ON CONFLICT UPDATE documentation,但不知道如何適應我的情況。特別是,它在我看來像DO NOTHING
不應插入一行(文檔說:「在衝突不做任何事情只是避免插入一行作爲其替代動作」),但它插入一個新行。
您是否爲該表定義了主鍵或唯一鍵? [編輯]你的問題,併爲表cap添加完整的'create table'語句(包括所有索引) –