簡體   English   中英

Oracle PL / SQL觸發器:使用where條件更新/插入

[英]Oracle PL/SQL Trigger: update/insert with where condition

也許這很容易,但我沒有前進。 B包含兩個字段: product_no NUMBERproduct VARCHAR2 觸發器應該執行的操作是從BP-table中插入相應的產品描述,在該BP-table中您還具有字段product_noproduct 例如,您在B.product_no輸入20,則應該從BP-Table自動輸入正確的產品。 Oracle版本是11g。

CREATE OR REPLACE TRIGGER A.trigger_on_B
AFTER INSERT OR UPDATE
ON A.B FOR EACH ROW
DECLARE
  varProduct varchar(20);
BEGIN
  SELECT bp.report_info 
    into varProduct
    from  bp, 
          B
   where bp.product_no = B.product_no;

   insert into B (product) values(varProduct) ;
exception 
  when others then NULL;
END;/

您可以使用偽記錄:new,:old來使其工作:

CREATE OR REPLACE TRIGGER A.trigger_on_B
AFTER INSERT OR UPDATE
ON A.B FOR EACH ROW
DECLARE
  varProduct varchar(20);
BEGIN
  SELECT bp.report_info 
    into varProduct
    from  bp
   where bp.product_no = :new.product_no;

   insert into B (product) values(varProduct) ;
exception 
  when others then NULL;
END;
  • when others then NULL;擺脫該行when others then NULL; 這是不適當的,您無法隱藏任何異常。
  • 擺脫觸發器,很難用觸發器中的邏輯來維護代碼。 有關更多信息,請查看本文

暫無
暫無

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

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