0

下面的 SQL 创建一个没有错误的触发器。当我在 SSMS 中添加记录时,触发器失败并显示以下消息:

消息 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
4

1 回答 1

2

对我来说很好。

我认为你的表不能有一个名为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
于 2012-07-22T17:55:48.313 回答