【问题标题】:SQL Trigger after insert not working插入后SQL触发器不起作用
【发布时间】:2017-03-29 06:48:34
【问题描述】:

我尝试编写一个在插入后更新数据的触发器。
我正在使用 SQL Server 2016 导入导出数据工具将我的数据从 Excel 传输到数据库中。
导入后,我需要运行一些更新语句。
我可以保存触发器,但它不会更新任何数据。我的错在哪里?

触发器:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [dbo].[TRG_InsertMappinng]
   ON  [dbo].[T_CCG_MBR2017_Across]
   AFTER  INSERT
AS 
BEGIN
    SET NOCOUNT ON;

    UPDATE  [DB_CC_FC_Database_SQL].[dbo].[T_CCG_MBR2017_Across] 
    SET [Colum1] = 'Text1' 
    Where [Colum1] IS NULL 
    AND [Colum2] = 'Text2' 
    AND [Colum3] = 'Text3' 
    AND [Colum4] = 'Text4'


END

【问题讨论】:

  • 执行此查询 UPDATE [DB_CC_FC_Database_SQL].[dbo].[T_CCG_MBR2017_Across] SET [Colum1] = 'Text1' where [Colum1] IS NULL AND [Colum2] = 'Text2' AND [Colum3] = 'Text3' AND [Colum4] = 'Text4' 在触发器外部使用时会做些什么?
  • 是的,当我在没有触发器的情况下运行它时它可以工作!
  • 选择变量中所有插入的值,然后更新 IT。这对您有什么作用
  • 谢谢,但我认为这没有帮助。我只是使用了一个简单的插入语句,我的触发器工作得很好。它只是不适用于数据导入工具...

标签: sql sql-server triggers sql-server-2016


【解决方案1】:

如果您的代码在触发器之外工作,但不在触发器内,则可能只是触发器被禁用。尝试启用它,然后再次运行以进行测试。

ENABLE TRIGGER [dbo].[TRG_InsertMappinng]
    ON [dbo].[T_CCG_MBR2017_Across];

【讨论】:

  • 谢谢,但它没有改变任何东西。似乎数据导入不算作插入。
  • 我只是使用了一个简单的插入语句,触发器完美地工作。它只是不适用于数据导入工具...
【解决方案2】:

正如here 所写,SQL 导入导出数据工具不会触发任何触发器。您可以找到有关该here 的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 2016-05-22
    • 1970-01-01
    • 2017-02-21
    相关资源
    最近更新 更多