2009-11-10 38 views
6

是否可以在觸發器內執行存儲過程?在觸發器中執行程序

謝謝

+0

如果我只是自己執行它,那麼它會工作。我想創建一個觸發器,它將在字段中有值時執行它。 – user207902 2009-11-10 16:58:10

回答

10

是的,是這樣的:

create or replace trigger trg 
after insert on emp 
for each row 
begin 
    myproc(:new.empno, :new.ename); 
end; 
+0

瞭解它。有用。非常感謝你。 – user207902 2009-11-10 17:36:54

+0

什麼是:new.empno? [means:new?] – Freelancer 2013-06-03 09:44:10

+0

@Freelancer:在Oracle行級別觸發器中,您可以使用:old和new來引用觸發語句效果之前和之後的列值。這意味着行級觸發器,我剛剛添加了缺少的'每行'部分。 – 2013-06-03 10:58:39

1

在SQL Server中它是。你使用的是什麼DBMS? ETA:Oracle,呃?我沒有親身經歷,但this似乎表明你可以。我通過谷歌搜索「oracle觸發器存儲過程」發現它。

+0

我正在使用Oracle – user207902 2009-11-10 16:51:12

1

當然可以。請記住,觸發器可觸發受DML觸發器影響的每一行。所以你的存儲過程應該被優化,否則你可能會遇到性能問題。觸發器是一件好事,但您只需記住使用它們時可能遇到的性能問題。

2

是的,你可以觸發一個觸發器的程序。 但是,請記住,觸發器應該不會訪問同一個表。