我有一個觸發器函數,當COLUMN A更新時由幾個表調用,以便可以根據不同函數的值更新COLUMN B. (解釋比實際更復雜)。觸發器函數接受col_a和col_b,因爲它們對於不同的表是不同的。如何在觸發程序中使用動態sql設置複合類型列
IF needs_updated THEN
sql = format('($1).%2$s = dbo.foo(($1).%1$s); ', col_a, col_b);
EXECUTE sql USING NEW;
END IF;
當我試圖運行上面的格式生成這個SQL:
($1).NameText = dbo.foo(($1).Name);
當我執行與我期待這樣的事情發生(當直線執行其運作使用SQL時沒有動態SQL):
NEW.NameText = dbo.foo(NEW.Name);
相反,我得到:
[42601] ERROR: syntax error at or near "$1"
如何動態更新記錄/複合類型NEW上的列?
Ildar,謝謝你的迴應。不幸的是,'needs_updated''背後有邏輯,每個表(和指定的列)都會重複使用''needs_updated''',那麼我可能會爲每個表創建單獨的觸發函數。我希望能夠減少重複的邏輯。 – Airn5475