如何让触发代码只针对特定的应用程序执行?

Pat*_*ric 8 sql-server sql-server-2008-r2

我想知道是否可以只为我当前的应用程序启用触发器,而不是为对表执行的任何 sql 启用触发器。

情况:

有两个应用程序在同一个数据库上工作。App1 和 App2。

我在“MyTable”上有一个触发器,它应该只在 App1 执行查询时触发,而不是在 App2 执行查询时触发。

mrd*_*nny 10

虽然不是一个好的设计,但它是可行的。您需要在触发器中放置逻辑,以便仅在连接正确的应用程序时才执行代码。

Create trigger... 
As
    If app_name() = 'something' 
    begin 
        put code here 
    end
Run Code Online (Sandbox Code Playgroud)

  • 在这种特定情况下,这可能不是问题,但其他潜在读者应该注意,`app_name()` 很容易通过连接字符串属性进行欺骗。 (8认同)
  • 是的,很容易被欺骗。不要出于安全目的这样做,但为了解决轻微的软件缺陷或其他方便的技巧,您可能没问题。我们有一些这样做的。 (4认同)