sql server触发器实现插入时操作另一张表
来源:互联网 发布:我的世界卡java设置 编辑:程序博客网 时间:2024/05/23 11:44
以前都是也得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
1 0
- sql server触发器实现插入时操作另一张表
- SQL操作 - 插入时更新数据
- SQL触发器--插入时判断数据是否已存在
- SQL触发器--插入时判断数据是否已存在
- 用触发器实现插入时自动填充默认值为序列
- 【Oracle】创建序列和触发器:实现插入时自动递增
- 如何实现插入时如果不存在则插入如果存在则更新的操作(分别用oracle、MySQL和SQL Server实现)
- SQL:连表时对另一张表的多次操作
- 关于批量插入时触发器的使用
- Oracle触发器实现插入或更新一张表数据同时插入或更新另一张表
- SQL SERVER触发器实现
- mysql 触发器 监听这个表插入时增加数据 在某字段变动时进行触发
- Oracle:行级触发器--对一张表进行操作时,向另一张表进行数据操作
- 触发器---一张表更新另一张表同步更新
- SQL 插入时,获取key值
- SQL Server大数据导入导出:将一张表的数据导入到另一张表
- sql server 执行大批量的update一张表到另一张表
- SQL server 根据另一张表的字段更新现有的数据表
- 【LeetCode】Factorial Trailing Zeroes 解题报告
- 329. Longest Increasing Path in a Matrix DFS解法
- java集合框架
- 浅谈开源大数据平台的演变
- 大数据环境下互联网行业数据仓库/数据平台的架构之漫谈
- sql server触发器实现插入时操作另一张表
- vs2013配置opencv2.4.8
- Linux学习之进程管理
- 第十三章反射(reflect)、类加载与垃圾回收总结
- 23种设计模式全解析
- 栈内存和堆内存
- jQuery高级事件
- win10快捷键大全 win10常用快捷键
- 第十四章 多线程编程总结