【问题标题】:trigger for a table cause indefinate execution in SQL server表的触发器导致 SQL Server 中的不确定执行
【发布时间】:2013-09-05 09:28:28
【问题描述】:

我为一个表编写了触发器以获取同一个表的数据并导出 .txt 文件,但它一直在执行,从未完成执行。我做了这样的代码

 create trigger monitorTrigger on test 
 for insert 
 as
 declare @sql varchar(8000)
 declare @cmdval varchar(8000)
 set @cmdval='"select * from test2.dbo.test"'
 SELECT @sql = 'bcp '+@cmdval+' queryout I:\File\mytest.txt -c -t -T -S YAMUNA\SQLEXPRESS'

适当的答案将不胜感激。

【问题讨论】:

  • 您确定要使用触发器执行此操作吗?
  • 我很确定无论它是否有效,这都是一个非常糟糕的主意。
  • 有没有其他方法可以达到我的要求
  • 是的,我想这样做,因为我有一个名为 testTable 的表,允许用户将数据插入到 testTable 中。每当 testTable 中有更新时,我只想导出更新的数据。所以我写了另一个触发器,它使用插入的表在另一个 tempTable 中只获取 testTable 的更新数据,这里我将编写这个触发器用于 tempTable 以导出 .txt 格式的数据。最后,我将在 .txt 文件中获取更新的数据。

标签: sql-server triggers sql-server-2012


【解决方案1】:

在同一个表的触发器中引用一个表绝不是一个好主意。如果您确实需要这样做,请尝试使用您可以在触发器中引用的 inserted 特殊表。也许将来自inserted 的数据插入到另一个表或全局临时表中,然后将该数据 bcp 出来。

但总的来说,这似乎是个坏主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    • 2015-11-26
    • 2023-03-29
    • 2010-12-26
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多