如何在SQL Server中创建接受外部参数的触发器?

如何在SQL Server中创建接受外部参数的触发器?,第1张

如何在SQL Server中创建接受外部参数的触发

您需要重新设计您的方法。数据库无法 只知道
有关您的应用程序用户信息的任何信息。而且,不,您不能将参数传递给触发器。但是您可以通过触发来引用您自己的表,因此有一种方法…

当您连接到数据库时,每个连接都会获得其自己的进程ID。您可以通过@@ spid获得此信息。

因此,当触发器触发时,您可以使用它来知道是哪个连接导致了更改。

您可以使用相同的数据库登录名进行100个并发连接,并且每个连接都有其自己的@@ spid值。

为了使它对您有用,您需要准备所有连接。每次建立连接时,您的应用程序都应写入表中,以记录使用该@@ spid的应用程序的用途。

也许像…这样简单

CREATE TABLE  map_spid_application_user (    spid          BIGINT,    application   VARCHAr(128),    user          VARCHAr(128),    PRIMARY KEY (spid)  )

然后,在每个连接上,运行类似这样的内容(可能通过存储过程)…

DELETE map_spid_application_user WHERe spid = @@spidINSERT INTO map_spid_application_user SELECT @@spid, 'myApp', 'myUser'

然后,在触发器中,您可以在此表上引用/联接以查找@@ spid引用的人。

您还可以变得更聪明,并使用类似的方法来永久记录用户连接的内容(如spid)。任何spid的当前用户将始终是连接日期时间最近的用户。

那时您几乎可以做任何事情。因为您正在创建所有信息,而不是依靠数据库 仅知道 @@ spid以外的任何信息。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5675184.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存