我编写了一个简单的触发器,它使用id列值设置列值。 这是我的触发器。
CREATE TRIGGER SubSectionsPrioritytrigger
ON SubSections
AFTER INSERT
AS
UPDATE dbo.SubSections
SET Priority = Id
写完此触发器后,这会在每次插入后更新所有记录。或者是唯一创建的新行。
有人可以就此提供任何信息。
感谢。
答案 0 :(得分:4)
它完全符合您的要求
UPDATE dbo.SubSections
SET Priority = Id
任何行都会更新。
您可以将其更改为
UPDATE dbo.SubSections
SET SubSections.Priority = Inserted.Id
FROM INSERTED
WHERE INSERTED.id = SubSections.id
这只会影响插入的行。
答案 1 :(得分:4)
要仅更新插入的行,您可以执行以下操作:
UPDATE dbo.SubSections
SET SubSections.Priority = SubSections.Id
FROM INSERTED
WHERE INSERTED.Id = dbo.SubSections.Id
答案 2 :(得分:1)
将最后一个插入的行更新为您想要的值,您需要从其他行指定使该行唯一的行ID。 并且在您的触发器中,您没有指定where子句,这会导致更新表中的所有行。 每当一个操作/事件发生在具有与之关联的触发器的表上时,就会插入/更新或删除新记录,在SQL Server的内存中创建一个魔术表,我们可以使用关键字“Inserted”访问该魔术表插入或更新的情况和删除时的“已删除”。 所以你的查询应该是这样的。
更新dbo.SubSections
SET SubSections.Priority = SubSections.Id
来自插入
WHERE INSERTED.Id = dbo.SubSections.Id