Sql server 2008 在执行存储过程时触发触发器

Sql server 2008 在执行存储过程时触发触发器,sql-server-2008,stored-procedures,triggers,Sql Server 2008,Stored Procedures,Triggers,我正在使用SQLServer2008。我有一个存储过程,它(在某些条件下)在我的表中插入数据,每次打开窗口时,应用程序都会调用这个存储过程。SQL事件探查器如下所示 exec TEST.dbo.spInsertRecords @parameter 现在我想要的是在调用此存储过程执行时触发触发器。 可能吗?如果是,请分享语法示例。触发器是在表上设置的,如果您真的需要在调用过程时触发某些内容(我真的不明白为什么,因为您应该能够修改过程以执行您想要的任何行为),添加一些虚拟表(日志表?),在该表上创

我正在使用SQLServer2008。我有一个存储过程,它(在某些条件下)在我的表中插入数据,每次打开窗口时,应用程序都会调用这个存储过程。SQL事件探查器如下所示

exec TEST.dbo.spInsertRecords @parameter
现在我想要的是在调用此存储过程执行时触发触发器。
可能吗?如果是,请分享语法示例。

触发器是在表上设置的,如果您真的需要在调用过程时触发某些内容(我真的不明白为什么,因为您应该能够修改过程以执行您想要的任何行为),添加一些虚拟表(日志表?),在该表上创建触发器(例如,在insert上),并“触发”过程中的触发器(插入一行)

如果期望触发器执行某些代码,例如将记录写入日志

  • 将代码直接写入过程中

  • 如果要在所有过程之前或之后执行通用代码,请在执行过程的位置编写代码

  • 例如,在PHP中:

    odbc_exec(“在参数“$procedure_name”之前执行我的_触发器;
    执行$procedure\u name@parameters;

    在“$procedure\U name'@parameters;”之后执行我的_触发器

    如果触发器的触发条件发生,触发器将触发-在触发器关联的表上插入
    更新
    删除
    。您不能手动“触发”触发器。。。若您在该表上有一个
    INSERT
    触发器,并且您的存储过程实际上插入了一行(或多行),那个么该触发器将触发。感谢marc_s,若存储过程将执行,但不在表中插入记录,该怎么办?我还可以选择传递到此存储过程的参数吗?
    INSERT
    触发器仅在有
    INSERT
    时触发。好的,让我再解释一下。我正在自定义Microsoft Dynamics GP窗口,此存储过程不是我的,但它是GP存储过程,它有时在表中插入数据,有时不插入。在GP中,我们没有源代码,所以我们通常使用触发器,数据库触发器和应用程序触发器。这个存储过程有一个参数,我想在这个存储过程调用时选择这个参数。所以我不能在存储过程上设置触发器?如果我使用insert触发器,记住insert并不总是发生,它会工作吗?你不能包装它吗?重命名它,并使用调用原始名称的相同名称(包装器)创建另一个,并在包装器中添加任何代码?:(遗憾的是,在这种情况下没有。