我想請從我從更新規則調用的函數記錄變量一列,正在以下錯誤:選擇列從一個記錄變量(PostgreSQL的8.4)
「不可能在記錄數據類型」欄中標識「名」
以下是我在做什麼,以產生錯誤:
從更新規則中:
SELECT * INTO TEMPORARY TABLE TempTable FROM NEW;
SELECT MyFunction();
從在MyFunction的()
DECLARE RecordVar Record;
SELECT * INTO STRICT RecordVar FROM TempTable;
EXECUTE 'UPDATE AnotherTable SET column = $1.name' USING RecordVar;
注:我知道有更容易的方式來實現什麼上面的代碼實現,但我已經簡化了實際執行專注於我有問題,這開闢了其他可能的解決方案,但我真的想在上面的代碼工作,如果可能的話。
歐文你好,非常感謝您的回覆。我相信你的建議可以適用於一種情況,但我的問題是我有多個視圖,每個視圖都有我想要應用我的函數的自己的基礎表。如果我要將表指定爲RecordVar的類型,那麼我必須爲每種表類型創建一個函數,我希望避免這種情況。對不起,沒有在我原來的問題中包含這些信息。 – user1545610 2012-07-23 22:35:05
關於我使用臨時表,我只是將它們用作一種機制,將規則內的NEW和OLD交換到我的函數,因爲您無法將數據類型記錄傳遞給函數。如果有更好的方法將NEW和OLD從規則傳遞給函數,那麼這樣做可能會導致解決我的問題。我不明白的一件事是爲什麼我可以使用NEW。在規則或觸發器的上下文中知道NEW是記錄數據類型而不是RecordVar。 ,我已經從NEW實例填充。 –
user1545610
2012-07-24 05:34:57
我試過以下的組合,導致'記錄類型未被註冊'或'無法將類型記錄轉換爲
相關問題