2009-11-10 101 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

是的,你可以触发一个触发器的程序。 但是,请记住,触发器应该不会访问同一个表。