2015-10-06 12 views
0

我有一個功能與視圖上的觸發器連接。視圖鏈接到「my_table」和其他表。我想通過該功能更新該表。我有4個領域。但是如果我只更新一個字段,例如contact_name,那又如何呢?我怎樣才能把這個字段放在SET語句上,而不是如下例所示的4個字段:更新只是使用觸發器和函數更新子句上設置的字段

CREATE OR REPLACE FUNCTION my_function() 
RETURNS TRIGGER 
LANGUAGE plpgsql 
AS $function$ 
BEGIN 
    UPDATE my_table 
       SET 
        identifier = NEW.identifier, 
        contact_name = NEW.contact_name, 
        contact_phone_number = NEW.contact_phone_number, 
        repair_date = NEW.repair_date, 
       WHERE id=OLD.id; 
      RETURN NEW; 
END 

回答

1

你需要爲此使用動態SQL。但沒關係。如果更新表,則所有的字段都會被數據庫複製到新行,即使您沒有明確指定它們。

所以,除非您也可以單獨更新這些字段,並且不想覆蓋它們的新值,只需將它們全部設置並且不用擔心。


嗯,除了存儲外的線在TOAST表不變字段

相關問題