您好,欢迎访问一九零五行业门户网

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

以前都是也得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 = 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.csdn.net/chenbin520/article/details/6026686
其它类似信息

推荐信息