簡體   English   中英

使用視圖上的觸發器使用來自另一列的數據更新現有列

[英]Update an existing column with data from another using a trigger on a view

我有一個查詢,我從問卷調查插件Moodle的多個表中提取數據。

這將返回一個視圖。 (將該視圖加入另一個視圖以進行php搜索)我想要的是app_ref列,其中插入了引用號,以復制到同一視圖中的另一列ref_number

ref_number|app_ref
            1234
            2345

我已經用Google搜索過,並且我知道我需要使用觸發器,但是我從未使用過觸發器/構造觸發器(學習PostgreSQL),所以我不確定是否已在PostgreSQL網站上閱讀,觸發器會在運行之前還是之后運行?

如果我理解正確,則您想更新一個不可更新的視圖,因為它是從多個表中選擇的。

首先,您可以編寫一個執行所需更新的過程:

CREATE OR REPLACE FUNCTION my_view_update()
  RETURNS trigger AS
$BODY$
BEGIN

-- Here comes your SQL to handle your ref_number and app_ref issue
-- use NEW.app_ref or OLD.app_ref to access values

RETURN NEW;
END
$BODY$

然后,您可以告訴視圖執行您的功能,而不是像這樣執行“ update”:

CREATE TRIGGER my_update 
  INSTEAD OF UPDATE
  ON my_view
  FOR EACH ROW
  EXECUTE PROCEDURE my_view_update;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM