日期:2014-05-18  浏览次数:20533 次

触发器同时操作几个表
现有一表A 里有字段 Id, CREATORID, SENDTIME, SENDLEVEL, RF_ID
现有一表B 里有字段 Id CREATORID, SENDTIME, SENDLEVEL, SENDSTATE, Template_Id (有10W数据)


要求实现:现在向表A插入数据同时更新B表



两表的关系是:表A中的RF_ID字段里内容来自与表B中的Template_Id 也就是 B.Template_Id =A.RF_ID


ALTER TRIGGER [dbo].[Tri_Insert_Update_Net]
  ON A
  AFTER INSERT
AS 
BEGIN
  declare @CREATORID varchar(40),@SENDTIME datetime,@SENDLEVEL smallint,@RF_ID int 
  select @CREATORID=CREATORID,
  @SENDTIME=SENDTIME,
  @SENDLEVEL=SENDLEVEL,
  @RF_ID=RF_ID  
  from inserted
update B
set B.CREATORID=@CREATORID,
B.SENDTIME=@SENDTIME,
B.SENDLEVEL=@SENDLEVEL
where B.Template_Id=@RF_ID
END



为何没有用呢

------解决方案--------------------
试一下水哥的
探讨

SQL code
--try
ALTER TRIGGER [dbo].[Tri_Insert_Update_Net]
ON A
AFTER INSERT
AS
BEGIN
update B
set B.CREATORID=i.CREATORID,
B.SENDTIME=i.SENDTIME,
B.SENDLEVEL=i.SENDLEVEL
from inserted i
where……

------解决方案--------------------
探讨

很怪的事。。如果在数据中直接在数据库中插入,另一个表会更新。。

如果在前台操作来更新,数据库已经插入了。但另一个表没有更新。。