SQL SERVER 2005 触发器问题

2025-01-07 09:40:55
推荐回答(2个)
回答1:

CREATE TRIGGER tr_A
  ON A
  FOR INSERT
AS
BEGIN
  UPDATE
    A
  SET
    A.d=B.f,
    A.e=B.f*B.g
  FROM
    A  JOIN  B  ON  ( A.关联列  =  B.关联列 )
      JOIN  inserted  ON  (A.a = inserted.a AND A.b = inserted.b AND A.c = inserted.c)
  WHERE
    A.d is null  AND  A.e  is  null;
END


注1:

因为触发的时候

A.d   和  A.e  都是 null


因此

A.d=B.f, A.e=A.d*B.g   

被修改成   

A.d=B.f,   A.e=B.f*B.g



注2:

不知道你的表A  的主键是什么, 因此有

JOIN  inserted  ON  (A.a = inserted.a AND A.b = inserted.b AND A.c = inserted.c)


如果表 A 的主键是 a , 那么代码可修改为

JOIN  inserted  ON  (A.a = inserted.a )

回答2:

参考下:
create trigger addData
on [A]
for insert
as
begin
update A
set d=f,e=g
from A,B
where a=确定到某行的字段
end