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

请教一个关于触发器的问题,谢谢
触发器用的非常少,不多说,上代码
SQL code

CREATE trigger [FC_RK_CLXX_T_update] on [dbo].[FC_RK_CLXX_T]  
instead   of  update  
as begin  
  
  if update(FC_CL_ID) or update(DJ) begin  
    Update FC_CL_QCKC_T Set FC_CL_ID=i.FC_CL_ID,DJ=i.DJ  
           From FC_CL_QCKC_T br , Deleted   d ,Inserted i   
           Where br.FC_RKJL_ID=i.ID   
  end   
  
end



解释下触发器的作用:当FC_RK_CLXX_T表中的字段FC_CL_ID或者DJ发生变化时,执行该触发器。
现在有这样一个问题:我的FC_RK_CLXX_T表还有另外一个字段SFSH,我需要对这个字段进行修改,但是因为这个触发器的存在,我的这个字段SFSH无法进行修改。求指教,谢谢!!

------解决方案--------------------
SQL code
CREATE trigger [FC_RK_CLXX_T_update] on [dbo].[FC_RK_CLXX_T]  
instead   of  update  
as begin  
  
  if update(FC_CL_ID) or update(DJ) begin  
    Update FC_CL_QCKC_T Set FC_CL_ID=i.FC_CL_ID,DJ=i.DJ  
           From FC_CL_QCKC_T br , Deleted   d ,Inserted i   
           Where br.FC_RKJL_ID=i.ID   
  end   
  if update(SFSH) begin  
    Update FC_CL_QCKC_T Set SFSH=i.SFSH
           From FC_CL_QCKC_T br , Inserted i   
           Where br.FC_RKJL_ID=i.ID   
  end  
  
end

------解决方案--------------------
SQL code

--這樣建,主鍵換成你的主鍵關聯就可以了
CREATE trigger [FC_RK_CLXX_T_update] on [dbo].[FC_RK_CLXX_T]  
instead   of  update  
as begin  
  
  if update(FC_CL_ID) or update(DJ) begin  
    Update FC_CL_QCKC_T Set FC_CL_ID=i.FC_CL_ID,DJ=i.DJ  
           From FC_CL_QCKC_T br , Deleted   d ,Inserted i   
           Where br.FC_RKJL_ID=i.ID   
  end   

  if update(SFSH)
    update FC_RK_CLXX_T set SFSH=i.SFSH from inserted i
        where i.主鍵=FC_RK_CLXX_T.主鍵
end