2014-02-28 45 views
1

我为我的应用程序创建了一个触发器,它允许我保存在网格中编辑的记录的历史记录。无效的对象名称'dbo.trgAfterUpdate' - 触发器错误

我收到错误:无效的对象名'dbo.trgAfterUpdate'。不知道为什么。

这里是我的触发器:

USE [TestTable] 
GO 
/****** Object: Trigger [dbo].[trgAfterUpdate] Script Date: 2/25/2014 6:31:25 AM ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER TRIGGER [dbo].[trgAfterUpdate] ON [dbo].[summary] 
FOR UPDATE 
AS 
    declare @ID int; 
    declare @CR varchar(50); 
    declare @Product varchar(50); 
    declare @Description varchar(MAX); 

    select @ID=i.ID from inserted i;  
    select @CR= i.CR from inserted i; 
    select @Product = i.Product from inserted i;  
    select @Description=i.Description from inserted i; 

    if update(Product) 
     Set @Summary = 'Old value was: ' + (Select Product from deleted) + ' New Value is: ' + (Select Product from inserted) 
     set @Changes_Made='Updated Record -- After Update Trigger.'; 

     insert into History(ID,Product,Description,Changes_Made,Audit_Timestamp, Summary) 
    values(@ID,@Product,@Description,@Changes_Made,getdate(), @Summary); 

关于如何解决此问题的任何帮助将是巨大的!

回答

2

只是确认表第一存在尝试。试试这个:

use [TestTable] 
GO 

select * from [dbo].[summary] 

如果你得到该表不存在的消息,那么你知道是什么问题:)

+0

该表返回正确的值 – CSharpDev4Evr

+4

这是一个新的触发器还是现有的触发器?我只注意到你的SQL语句使用了一个ALTER语句。它应该使用CREATE TRIGGER来代替。 – user3358344

+0

哇,就是这样。对我来说很愚蠢。非常感谢! – CSharpDev4Evr

1

这通常意味着2件事中的1件。

  • 你引用的对象(表,触发器,存储过程等) 这实际上并不存在(比如,你执行的查询更新 表,并且该表不存在) 。
  • 表存在,但并没有提及它正确

与数据库名称

ALTER TRIGGER [dbName].[dbo].[trgAfterUpdate] ON [dbName].[dbo].[summary] 
FOR UPDATE 
AS 
+0

仍然没有运气。我刚刚得到了错误 – CSharpDev4Evr

+0

你能否重新创建触发器 –

+0

我尝试了一下这个过程,但是我使用的代码获得了帮助...并不知道如何从头开始。你能提供一些指导吗? – CSharpDev4Evr

相关问题