监控向表TEST插入特殊记录的存储过程

有张表TEST;里面的字段cola出现了负数的特殊记录,我想找到是那个存储过程插入的;现在要通过触发器实现,在触发器里面如何获取对应的存储过程名称?

我刚才写了个触发器如下test_insert,还有个存储过程 testinsert20230406JK,但是在下面的@procname中每次都是获取到的为触发器名test_insert,而不是存储过程的名称,这个应该如何修改

ALTER TRIGGER [dbo].[test_insert]
   ON  [dbo].[Test]
   AFTER insert
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    declare @colval int
    declare @procname nvarchar(100)=''
    select @colval=s.colval from inserted s ;
    SELECT @procname=OBJECT_NAME(@@PROCID) ;
    if(@colval>10)
    begin
      insert into TestLog(logval,logprocename)
      values(@colval,@procname)
    end

END

引用新必应
触发器可以在数据库表上设置,用于在数据插入、修改或删除时自动触发一些动作。在SQL Server中,可以使用EVENTDATA函数获取触发器在发生事件时提供的信息,包括存储过程名称等。

具体来说,在触发器中可以使用以下语句来获取存储过程名称:

SELECT OBJECT_NAME(@@PROCID)
其中,@@PROCID是一个全局变量,用于表示当前执行的存储过程的ID。使用OBJECT_NAME()函数将该ID转换为存储过程的名称。

因此,在你的触发器中,你可以使用以上代码获取相应的存储过程名。需要注意的是,如果该特殊记录是手动插入的,则无法通过该方法获取存储过程名。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^