更新來自SELECT查詢我想UPDATE
在維度表client
一些列根據event
表數據:重複鍵衝突在Vertica的
UPDATE client AS c
SET
some_attr_last_value = last_attr_values.value
FROM (
SELECT
l.client_id,
value,
ROW_NUMBER() OVER (PARTITION BY l.client_id ORDER BY timestamp DESC) AS num
FROM event AS l
WHERE
timestamp > DATE_TRUNC('month', NOW() - INTERVAL '1 month')
) AS last_attr_values
WHERE
last_attr_values.num = 1 AND
c.client_id = last_attr_values.client_id AND
c.some_attr_last_value <> last_attr_values.value;
我已經有類似上面的幾個疑問:他們是更新等欄目以同樣的方式(只與其他欄目),並運作良好。但有一個查詢會產生錯誤:
ERROR 6745: Duplicate key values: 'client_id=…' -- violates constraint '… .client.C_PRIMARY'
但是我不會嘗試更改client_id
。爲什麼發生這個錯誤?
我檢查了client
表,但它沒有重複。 ANALYZE_CONSTRAINTS('client')
也不返回違規。
版本是7.2.2-1。
那張桌子上有沒有觸發器?我不熟悉vertica,所以我只是把它扔在那裏。 –
據我所知,Vertica不支持觸發器。 – Timurib
你可以添加'事件'和'客戶'的CREATE TABLE,以及確切的UPDATE語句 - 以及(如果適用的話),您在同一事務中激發的一堆以前的UPDATE語句(假設您已關閉自動提交或觸發了BEGIN TRANSACTION之前)? – marcothesane