zoukankan      html  css  js  c++  java
  • 记一次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;
  • 相关阅读:
    mac 使用指南
    客服系统引用方案
    CSS中margin和padding的区别
    NuGet学习笔记(1)——初识NuGet及快速安装使用
    百度搜索这些词:(百度搜索特效,好玩)
    sql语言:如何查询字符串某个字符的个数?
    Sql日期时间格式转换
    SQL获取当前时间(日期)
    Redis快速入门:初识Redis
    选择Key-Value Store
  • 原文地址:https://www.cnblogs.com/motion/p/15533406.html
Copyright © 2011-2022 走看看