我有一个覆盖UPDATE的视图和触发器。我尝试理解代码,但是我遇到了一些问题from deleted
和from inserted
- 这些是由原始更新自动创建的吗?这是否意味着如果我调用此触发器,首先调用更新,然后调用触发器?
create trigger updateView on View
instead of UPDATE as
begin
declare @nameK VARCHAR(100), @addresK VARCHAR(100), @nameZ VARCHAR(100), @number INT, @date DATE;
declare @nameKo VARCHAR(100), @addresKo VARCHAR(100), @nameZo VARCHAR(100), @numbero INT, @dateo DATE; -- 'o'ld
declare insCur cursor for select name, addres, bandName, number, date from inserted;
declare delCur cursor for select name, addres, bandName, number, date from deleted;
open insCur;
open delCur;
...
答案 0 :(得分:1)
此触发器将触发而不是执行更新。 inserted
和deleted
表格可用,以便您确定:
inserted
deleted
无论触发器的类型如何,都使用inserted
和deleted
的约定。因此,例如,在after update
触发器中,只需执行正常更新,deleted
表将是了解先前值的主要方法。
答案 1 :(得分:0)
删除包含旧值,插入 - 新值。 有一些选项:AFTER UPDATE或BEFORE UPDATE,你可以设置它们来查看你想要的行为。
关于已删除和已插入: UPDATE dbo.Client SET Name =' John'姓名='史蒂夫' 您将拥有:已删除的值'史蒂夫',插入值'约翰'
另外,我建议避免在触发器中使用游标,即它可以达到很高的性能。