记一次SQL Server insert触发器操作
需求:在河道水情表(ST_RIVER_R )新增插入数据时,更新实时数据表(SS_data) 中关联字段的值。
需求概括下:当A表中新增数据时,同时更新B表中的某字段
代码如下:
USE [DBCNBZ]
GO /****** Object: Trigger [dbo].[tri_insert_a] Script Date: 2021/11/10 14:17:00 ******/
SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO -- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE trigger [dbo].[tri_insert_a]
on [dbo].[ST_RIVER_R]
after insert
as
begin declare @Z1 numeric(18,3);
declare @Q1 numeric(18,3);
declare @Z2 numeric(18,3);
declare @Q2 numeric(18,3);
declare @Z3 numeric(18,3);
declare @Q3 numeric(18,3);
declare @TM1 datetime;
declare @TM2 datetime;
declare @TM3 datetime; --一站
select top 1 @Z1 = Z from [ST_RIVER_R] where STCD='00000001' order by TM desc;
select top 1 @Q1 = Q from [ST_RIVER_R] where STCD='00000001' order by TM desc;
select top 1 @TM1 = TM from [ST_RIVER_R] where STCD='00000001' order by TM desc; --二站
select top 1 @Z2 = Z from [ST_RIVER_R] where STCD='00000002' order by TM desc;
select top 1 @Q2 = Q from [ST_RIVER_R] where STCD='00000002' order by TM desc;
select top 1 @TM2 = TM from [ST_RIVER_R] where STCD='00000002' order by TM desc; --三站
select top 1 @Z3 = Z from [ST_RIVER_R] where STCD='00000013' order by TM desc;
select top 1 @Q3 = Q from [ST_RIVER_R] where STCD='00000013' order by TM desc;
select top 1 @TM3 = TM from [ST_RIVER_R] where STCD='00000013' order by TM desc; begin
update [dbo].[SS_data] set water1=@Z1,[SunShiFlow1]=@Q1,TM=@TM1 where [dbo].[SS_data].Num ='Z1'; update [dbo].[SS_data] set water1=@Z2,[SunShiFlow1]=@Q2,TM=@TM2 where [dbo].[SS_data].Num ='Z2'; update [dbo].[SS_data] set water1=@Z3,[SunShiFlow1]=@Q3,TM=@TM3 where [dbo].[SS_data].Num ='Z3';
end end GO
我这里是每次更新了 SS_data中三个字段的值,SS_data是一张实时数据表,每次都是update操作,每个测站保留最新的一条数据。
这里注意下 触发器的变量定义和赋值的方式
declare @TM3 datetime; --一站
select top 1 @TM3 = TM from [ST_RIVER_R] where STCD='00000001' order by TM desc;
记一次SQL Server insert触发器操作的更多相关文章
- 记一次SQL Server Insert触发器编写过程
实现功能:新增特定类型的新闻时,自动追加特定的背景图片. 第一版(错误信息:不能在 'inserted' 表和 'deleted' 表中使用 text.ntext 或 image 列),代码如下: - ...
- Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表)
Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ==== ...
- 记一次sql server 2005访问http接口,并解析json的过程
记一次sql server 2005访问http接口,并解析json的过程 JSON解析官方网站:https://www.red-gate.com/simple-talk/sql/t-sql-pro ...
- SQL SERVER: 合并相关操作(Union,Except,Intersect)
SQL SERVER: 合并相关操作(Union,Except,Intersect) use tempdb create table tempTable1 (id int primary key id ...
- Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表)
Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUN ...
- SQL Server Insert操作中的锁
原文:SQL Server Insert操作中的锁 这篇博文简单介绍一下在SQL Server中一条Insert语句中用到的锁. 准备数据 首先我们建立一张表Table_1,它有两列Id(bigint ...
- SQL Server 多库操作 库名.dbo.表名 出错的问题!
SQL Server 多库操作 库名.dbo.表名 出错的问题! 数据库名不要用数字开头. 例如:343934.dbo.user 这就会出错.md a343934.dbo.user 就没问题!! 记住 ...
- SQL Server DDL触发器运用
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 基础知识(Rudimentary Knowledge) DDL运用场景(DDL Scene) ...
- SQL Server:触发器详解
1. 概述 触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活. 所以触发器可以用来实现对表实施复杂的完整性约束. 2. 触发器的分类 SQL S ...
随机推荐
- oracle 使用union提示ORA-00907:缺少右括号
在使用union的时候提示:ORA-00907:缺少右括号 此原因是因为在union的左边和右边都有order by,因此需要去掉一边的order by,保留一个即可. 例如: select * fr ...
- 暑假算法练习Day3
第三天!!!最近要开始归纳总结Python学习啦!! 1006 换个格式输出整数 (15 分) 让我们用字母 B 来表示"百".字母 S 表示"十",用 12. ...
- 修改eclipse中注释字体而不影响代码字体
eclipse的注释字体大小如何修改?不改变代码的字体 貌似没有直接的办法,但是可以取个巧: Window --> Preferences --> General --> Appea ...
- 如何看待 SAE 在2014 年 3 月 24 日发生的的大面积宕机事故?
3 月 24 日晚间大约 23 点左右,新浪云 SAE 一处核心机柜掉电,导致 SAE 平台下大量应用无法正常访问,并在 10 小时后才陆续修复.这次事故暴露 SAE 的哪些缺陷?SAE 运维人员又是 ...
- 04373 C++程序设计 2019版 第一章习题五、程序设计题
题目: 1.编写一个程序,将从键盘输入的n个字符串保存在一个一维数组A中.在输入字符串之前,先输入n的值.要求,数组A需要动态申请空间,程序运行结束前再释放掉. #include <iostre ...
- 快速从零开始整合SSM,小白包会(1)
整合SSM,关键就是几个xml的配置. 准备: 1. Idea(配置好tomcat,可以安装插件freeMybatis,提高效率,安装插件不难,百度经验就有) 2. 下载好数据库MySql,以 ...
- [loj3256]火灾
将问题差分,即求$\sum_{i=1}^{r}S_{i}(t)-\sum_{i=1}^{l-1}S_{i}(t)$,由于两者类似,不妨考虑前者 构造矩阵$A_{i,j}=S_{j}(i)-S_{j}( ...
- [cf643G]Choosing Ads
首先对于$p>50$,有经典的做法,即不断删去区间中不同的两数,最终剩下的即为出现次数超过一半的数(或没有),用线段树维护即可 那么对于$p\le 50$,类似的,即删去区间中不同的$\lflo ...
- AOP声明式事务
1.spring-dao.xml修改 参考上面工程配置 <?xml version="1.0" encoding="UTF-8"?> <bea ...
- Object类的toString和Equals方法,以及Objects类的Equals方法
Object类 toString()方法 public class Person { private String name; private int age; public Person() { } ...