• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

sql server触发器实现插入时操作另一张表

mysql 搞代码 4年前 (2022-01-09) 18次浏览 已收录 0个评论

以前都是也得mysql,现在写sqlserver的触发器,感觉改动还是蛮大的 1.定义变量 #在mysql中变量直接这么定义就可以了SET @VALUE = 111;#在sql server中declare @count int;#并赋值set @count =0;#如果是查询,必须这么些select @count = count(*) from WQ_MNI

以前都是也得mysql,现在写sqlserver的触发器,感觉改动还是蛮大的

1.定义变量

#在mysql中变量直接这么定义就可以了SET @VALUE = "111";#在sql server中declare @count int;#并赋值set @count =0;#如果是查询,必须这么些select @count = count(*) from WQ_MNINF_D_REAL where STCD=@stcd;

2.判断

在mysql中,if判断的格式
if 条件 then 语句 end if;

而在sql server中,if判断的格式

if(条件) begin 语句 end;

例子

#mysqlIF @VALUE4=1 THEN   INSERT INTO t_sca_history_data (METER_CODE,PARAM_CODE,DATA_VALUE,V_VALUE,DATE_TIME) VALUES                        (NEW.METER_CODE,NEW.PARAM_CODE,NEW.DATA_VALUE,NEW.V_VALUE,NEW.DATE_TIME);END IF;sql serverif(@count=0)begin   insert into WQ_MNINF_D_REAL select STCD,TYPE,UPPERVALUE,LOWERVALUE,TM,NT,@smid,@stnm,@prjcd,@pipcd from inserted;end 

3.触发器的new

在mysql中,用new.NAME 可以得到触发器触发插入的值,而sql server不是这样的,sql server是把处罚的数据放在一个临时表中,所以它的操作是这样的

#inserted代表插入数据的那张临时表,同时还有deleted 这张用作删除数据的临时表select STCD from inserted#若只是把插入的数据插入另一张表,语句如下insert into WQ_WWFINF_D_REAL select PRJCD,TM,INFL,SWWL,CWWL,OTPS,OTF,QOEC,PSPPS,NT FROM inserted;#如果还有加点别的数据,可以这么做insert into WQ_MNINF_D_REAL select STCD,TYPE,UPPERVALUE,LOWERVALUE,TM,NT,@smid,@stnm,@prjcd,@pipcd from inserted;

4.我做的触发器的代码,改触发器的作用是把原始数据表的数据插入到实时数据表中,如果实时表没有该数据,就插入,如果有,就删除再插入

BEGIN  declare @stcd varchar(30);  declare @count int;  declare @smid int;  declare @stnm varchar(30);  declare @prjcd varchar(30);  declare @pipcd varchar(30);  select @stcd = STCD from inserted;  select @count = count(*) from WQ_MNINF_D_REAL where STCD=@stcd;  select @smid = SMID from WQ_WQSINF_B where STCD=@stcd;  select @stnm = STNM from WQ_WQSINF_B where STCD=@stcd;  select @prjcd = 本文来源gaodai#ma#com搞*!代#%^码$网*PRJCD from WQ_WQSINF_B where STCD=@stcd;  select @pipcd = PIPCD from WQ_WQSINF_B where STCD=@stcd;  if(@count=0)    begin      insert into WQ_MNINF_D_REAL select STCD,TYPE,UPPERVALUE,LOWERVALUE,TM,NT,@smid,@stnm,@prjcd,@pipcd from inserted;    end   else    begin      delete WQ_MNINF_D_REAL where STCD=@stcd;      insert into WQ_MNINF_D_REAL select STCD,TYPE,UPPERVALUE,LOWERVALUE,TM,NT,@smid,@stnm,@prjcd,@pipcd from inserted;    endEND

这篇博文给我作用挺大的,一并贴出

http://blog.gaodaima.com/chenbin520/article/details/6026686


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:sql server触发器实现插入时操作另一张表

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址