以前都是也得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;
在mysql中,if判斷的格式
if 條件 then 語句 end if;
而在sql server中,if判斷的格式
if(條件) begin 語句 end;
例子
#mysql IF @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 server if(@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; end END
http://blog.csdn.net/chenbin520/article/details/6026686
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com