我有一个名为YearTable的表,其中包含三列(Year,Status和LastUpdatedTime)。每当有人在年份或状态列中添加/更新值时,需要更新LastUpdatedTime。我为此写了一个触发器,但现在每次我尝试添加新记录时都会收到错误消息:
ErrorSource:.NetSqlClient数据提供程序。 错误消息:无法将值NULL插入Column' Year',table' Budget.YearTable&#39 ;;列不允许空值。插入失败。
这是触发器:
CREATE TRIGGER UpdateTrigger
ON YearTable
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
insert into tblaudit(LastUpdatedTime)
values(GETDATE())
END
GO
答案 0 :(得分:0)
你说:
我为此写了一个触发器,但现在每次尝试添加新记录时都会收到错误消息:
ErrorSource:.NetSqlClient数据提供程序。错误消息:无法将值NULL插入列'Year',表'Budget.YearTable';列不允许空值。插入失败。
从这一点来看,这是否意味着您的updates
和deletes
正在运作?如果是这种情况,那么听起来就像错误消息一样。当您在表格中insert
进行操作时,您没有为year
上的YearTable
列提供值。
您是否尝试过禁用触发器并在执行相同操作时查看行为是否存在?
在进一步考虑您的问题之后,我现在 假设 您的意思是当YearTable
中的行更新时,该行YearTable
中的LastUpdated
列已更新。虽然现在我不确定tblAudit
来自哪里。或者,为什么在此时没有要更新的行时,会为deletes
创建触发器。
我假设你的桌子上的钥匙是year
- 如果你现在没有钥匙,你可能需要一把钥匙。
要处理插入/更新的LastUpdated
,您可以在触发器中使用以下内容(假设年份是您的密钥):
UPDATE YearTable
SET LastUpdated = GetDate()
FROM inserted
where YearTable.Year = inserted.year