2012-07-22 131 views
0

以下SQL創建一個沒有錯誤的觸發器。當我在SSMS添加一條記錄,觸發失敗,並顯示以下信息:爲什麼此觸發器會導致「無效列名」CreatedDT'「?

消息207,級別16,狀態1,行4
無效的列名稱CreatedDT「。

我在做什麼錯?這是SQL Server 2005(v9.0.3080)。謝謝!

CREATE TRIGGER TRG_XXX_CreatedOn ON dbo.XXX 
AFTER INSERT 
AS 
BEGIN 
UPDATE dbo.XXX 
SET dbo.XXX.CreatedDT = GETDATE() 
WHERE dbo.XXX.Id IN (SELECT Id FROM Inserted) 
END 
GO 

回答

1

適合我。

我認爲你的表不能有一個名爲CreatedDT的列。請仔細檢查此(包括名稱的情況下,也許您的排序規則可能區分大小寫)

而不是有一個觸發器,設置INSERT這不能你只是設置該列的默認約束嗎?這將比通過觸發器更有效。

測試腳本作品

CREATE TABLE dbo.XXX 
(
Id int, 
CreatedDT DATETIME 
) 

GO 

CREATE TRIGGER TRG_XXX_CreatedOn ON dbo.XXX 
AFTER INSERT 
AS 
BEGIN 
UPDATE dbo.XXX 
SET dbo.XXX.CreatedDT = GETDATE() 
WHERE dbo.XXX.Id IN (SELECT Id FROM Inserted) 
END 
GO 

INSERT INTO dbo.XXX(Id) VALUES(1) 

GO 

SELECT * FROM dbo.XXX 
+0

正確的,我可以只設置的默認值。但是,這是我可以想出的最簡單的例子來演示遇到的問題。我有更新觸發器和其他更復雜動作觸發器的問題。 – user1469655 2012-07-23 16:09:18

相關問題