2014-02-28 54 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

相關問題