需求:在河道水情表(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触发器操作的更多相关文章

  1. 记一次SQL Server Insert触发器编写过程

    实现功能:新增特定类型的新闻时,自动追加特定的背景图片. 第一版(错误信息:不能在 'inserted' 表和 'deleted' 表中使用 text.ntext 或 image 列),代码如下: - ...

  2. Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表)

    Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ==== ...

  3. 记一次sql server 2005访问http接口,并解析json的过程

    记一次sql server 2005访问http接口,并解析json的过程  JSON解析官方网站:https://www.red-gate.com/simple-talk/sql/t-sql-pro ...

  4. SQL SERVER: 合并相关操作(Union,Except,Intersect)

    SQL SERVER: 合并相关操作(Union,Except,Intersect) use tempdb create table tempTable1 (id int primary key id ...

  5. Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表)

    Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUN ...

  6. SQL Server Insert操作中的锁

    原文:SQL Server Insert操作中的锁 这篇博文简单介绍一下在SQL Server中一条Insert语句中用到的锁. 准备数据 首先我们建立一张表Table_1,它有两列Id(bigint ...

  7. SQL Server 多库操作 库名.dbo.表名 出错的问题!

    SQL Server 多库操作 库名.dbo.表名 出错的问题! 数据库名不要用数字开头. 例如:343934.dbo.user 这就会出错.md a343934.dbo.user 就没问题!! 记住 ...

  8. SQL Server DDL触发器运用

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 基础知识(Rudimentary Knowledge) DDL运用场景(DDL Scene) ...

  9. SQL Server:触发器详解

    1. 概述 触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活. 所以触发器可以用来实现对表实施复杂的完整性约束. 2. 触发器的分类 SQL S ...

随机推荐

  1. git修改用户和邮箱

    GIT查看当前用户以及邮箱 $ git config user.name $ git config user.email GIT修改用户以及邮箱 $ git config --global user. ...

  2. scrapy的安装,scrapy创建项目

    简要: scrapy的安装 # 1)pip install scrapy -i https://pypi.douban.com/simple(国内源) 一步到位 # 2) 报错1: building ...

  3. 菜鸡的Java笔记 Eclipse 的使用

    Eclipse 的使用    1. Eclipse 简介    2. Eclipse 中的JDT 的使用    3. Eclipse 中的使用 junit 测试        Eclipse (中文翻 ...

  4. Java_map

    1 package Test; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 public class MapTest { 7 p ...

  5. [bzoj1079]着色方案

    由于最终的染色只与ci为几的个数有关,因此定义状态f[a][b][c][d][e][p]表示有a个ci=1,b个ci=2,--,有e个ci=5,上一次选择了ci=p的.状态的转移:发现p会让p-1少选 ...

  6. [bzoj1738]发抖的牛

    二分答案,每一头牛向所有在规定时间内能走到的牛棚连inf的边,每一个源点向牛连牛数量的边,每一个牛棚向汇点连牛棚容量的边,能满流则意味着这个答案可行,否则不可行. 1 #include<bits ...

  7. [bzoj1385]Division expression

    容易发现a2一定是分母,且容易做到其余都是分子,因此相当于判定a2能否整除a1*a3*--*an,不断让a2除以其与其他数的gcd即可(注意特判n=1) 1 #include<bits/stdc ...

  8. c# Quartzs定时器的简单使用

    使用背景: 首先想到倒计时,定时任务.大家想到的肯定就是定时器.那么定时器在web和winfrom程序中有着很大的作用.那在服务器端有没有像定时器一样的存在呢. 有了这些需求,我找到了第三方的组件 Q ...

  9. 详解如何用 CSS3 完成 3D transform变换

    Tips:阅读提示!!! 首先,本文针对的是3D transform变换的学习,所以你需要对 2D transform变换 有一定的了解 其次,需要说明的是,代码是一种需要自己不断实践的学科,建议各位 ...

  10. CF1477A Nezzar and Board

    考虑 \(2x - y\) 我们改为 \(x + (x - y)\) 是一个更好的形式. 我们可以表示一个数为\(x_i + \sum_{j,k}(x_j - x_k) = K\) 我们考虑移到 \( ...