我在兩個字段lane_id和position上有一個具有唯一索引的表。PostgreSQL:具有唯一索引的批量更新
現在,我想用這個查詢來更新行:如果我有一個以上的票
duplicate key value violates unique constraint "teams_ticket_position_bfcce9fa_uniq"
:
UPDATE "teams_ticket" SET "position" = ("teams_ticket"."position" + 1) WHERE ("teams_ticket"."lane_id" = 1 AND "teams_ticket"."position" >= 0)
與結束。
我該如何解決這個問題?
取決於您的模式。這聽起來像是你對增加的值有一個唯一的鍵約束,這將是一個開始尋求修復的好地方。 – Makoto
@Makoto是的,我知道。我有和索引(見票的第一行)。問題在於,將所有門票轉移一個位置應該以有效的情況結束(所有lane_id - 位置對仍然是唯一的)。但看起來他們一個接一個地移動,然後索引失敗。我想知道什麼是解決這個問題的正確方法。 – marxin
這裏你需要'延遲'。 – wildplasser