【发布时间】:2026-01-14 22:30:01
【问题描述】:
通过查看其他示例,我想出了以下内容,但它似乎无法按我的意愿工作:我希望它仅在 QtyToRepair 值已更新时才更新修改后的信息...但它不会那样做。
如果我注释掉 where 则修改后的信息在每种情况下都会更新。正如我所说,其他例子让我保持乐观。任何线索表示赞赏。谢谢。
沃尔特
ALTER TRIGGER [dbo].[tr_SCHEDULE_Modified]
ON [dbo].[SCHEDULE]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE SCHEDULE SET modified = GETDATE()
, ModifiedUser = SUSER_NAME()
, ModifiedHost = HOST_NAME()
FROM SCHEDULE S
INNER JOIN Inserted I on S.OrderNo = I.OrderNo and S.PartNumber = I.PartNumber
WHERE S.QtyToRepair <> I.QtyToRepair
END
【问题讨论】:
-
关于
update()的警告 - 它只测试列是否出现在更新列表中,并且对于插入总是正确的。它不会检查列值是否已更改,因为您可能有不止一行,其中一些值已更改,而有些则没有。
标签: sql sql-server triggers