例如有两个表:t1,t2 两个表 ID 对应,我在T1表写了个触发器如下:
CREATE TRIGGER wwwww ON [dbo].[t1]
FOR UPDATE
AS
declare @mc as varchar(20),@id as varchar(10)
select @mc = mc,@id = id from deleted
update t2
set mc = @mc
where id = @id但是我每次更新T1表时每次都更新了多条记录,为什么触发器只更新T3最后一条记录,;例如:
T1表更新了:
id MC
1 11
2 22
3 33
4 44
T2表变化如下:
id MC
1 xx
2 xx
3 xx
4 44只有T1表更新的最后一条记录和T2表对应的发生了变化其余的都没有变化,
CREATE TRIGGER wwwww ON [dbo].[t1]
FOR UPDATE
AS
declare @mc as varchar(20),@id as varchar(10)
select @mc = mc,@id = id from deleted
update t2
set mc = @mc
where id = @id但是我每次更新T1表时每次都更新了多条记录,为什么触发器只更新T3最后一条记录,;例如:
T1表更新了:
id MC
1 11
2 22
3 33
4 44
T2表变化如下:
id MC
1 xx
2 xx
3 xx
4 44只有T1表更新的最后一条记录和T2表对应的发生了变化其余的都没有变化,
CREATE TRIGGER wwwww ON [dbo].[t1]
FOR UPDATE
AS
begin
update t2
set mc = deleted.mc
from t2 t,deleted
where t.id = deleted.id
end
go
update t2
set mc = inserted.mc
from t2 t,inserted
where t.id = inserted.id
end 这样就正确了
你说的deleted 只能把T2表的值更新成 t1以前值
FOR UPDATE
AS
begin
update t2
set mc = deleted.mc
from t2 t,deleted
where t.id =inserted.id
end
go
CREATE TRIGGER wwwww ON [dbo].[t1]
FOR UPDATE
AS
begin
update t2
set mc = inserted.mc
from t2 t,deleted
where t.id =inserted.id
end
go