sql server 函数与触发器的使用

sql server中触发器的使用

--从临时表中查找指定的专家记录是否存在
create function F_EXPERT_EXIST_IN_TEMP(
   @ExpertId numeric(9),
   @SqlType numeric(9),
   @Trs_flag numeric(9)

)
returns int
as
begin
    declare @ret int
    select @ret = 0
      select @ret = count(*) from [86_xiehe_time$_temp]
      where EXPERTID = @ExpertId and SQL_TYPE = @SqlType and TRS_FLAG = @Trs_flag
    return @ret
end

 

--工作经历触发器(只有专家才有工作经历)
 --新增
 CREATE TRIGGER [WorkHistory_I_TRIG] ON [XWCMWORKHISTORY] FOR INSERT AS
   BEGIN
  --需要判断在临时表中是否已经存在  
  declare @nIsExist int
  select @nIsExist = DBO.F_EXPERT_EXIST_IN_TEMP(OBJID,1,0) from INSERTED
  if(@nIsExist>0)
   return
  --不存在的话则添加到临时表中
      INSERT INTO [86_xiehe_time$_temp] (EXPERTID,SQL_TYPE,TRS_FLAG)
      SELECT OBJID,1,0 FROM INSERTED
   END

GO
 
 --修改
 CREATE TRIGGER [WorkHistory_U_TRIG] ON [XWCMWORKHISTORY] FOR UPDATE AS
   BEGIN
  --需要判断更新前的操作表中有记录  
  declare @nIsExist int
  select @nIsExist = DBO.F_EXPERT_EXIST_IN_TEMP(OBJID,3,0) from DELETED
  if(@nIsExist=0)
   begin
    --不存在的话则添加到临时表中
        INSERT INTO [86_xiehe_time$_temp] (EXPERTID,SQL_TYPE,TRS_FLAG)
       SELECT OBJID,3,0 FROM DELETED
   end

  --判断是否需要添加到更新后的表
  select @nIsExist = DBO.F_EXPERT_EXIST_IN_TEMP(OBJID,1,0) from INSERTED
  if(@nIsExist=0)
   begin
        INSERT INTO [86_xiehe_time$_temp] (EXPERTID,SQL_TYPE,TRS_FLAG)
        SELECT OBJID,1,0 FROM INSERTED
   end
   END

GO
 
 --删除
 CREATE TRIGGER [WorkHistory_D_TRIG] ON [XWCMWORKHISTORY] FOR DELETE AS
   BEGIN
  --需要判断在临时表中是否已经存在  
  declare @nIsExist int
  select @nIsExist = DBO.F_EXPERT_EXIST_IN_TEMP(OBJID,3,0) from DELETED
  if(@nIsExist>0)
   return

  --不存在的话则添加到临时表中
      INSERT INTO [86_xiehe_time$_temp] (EXPERTID,SQL_TYPE,TRS_FLAG)
      SELECT OBJID,3,0 FROM DELETED
   END

GO

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值