zoukankan      html  css  js  c++  java
  • sql 触发器

    很久没有接触过这个东西了,记录一下,插入数据后触发的




    ALTER TRIGGER [dbo].[Crack_Monitoring_Initialized]
    ON [dbo].[T_THEMES_DEFORMATION_DEEP_DISPLACEMENT]

    AFTER insert
    AS
    declare @sensorid int;
    declare @canshu1 int;
    declare @canshu2 int;

    ----保留值 Retain original value 另外一个触发器合并到一起了

    update T_THEMES_DEFORMATION_DEEP_DISPLACEMENT
    set ORIGINAL_DEEP_DISPLACEMENT_X_VALUE=(select DEEP_DISPLACEMENT_X_VALUE from inserted),
    ORIGINAL_DEEP_CUMULATIVEDISPLACEMENT_X_VALUE =(select DEEP_CUMULATIVEDISPLACEMENT_X_VALUE from inserted)
    where ID=(select ID from inserted) --决定需要更新的行
    --------------------------------------------------------------------


    -- 声明表变量
    DECLARE @temp TABLE
    (

    id int, --自增id
    sensorid INT,
    parameter1 decimal(18,6),
    parameter2 decimal(18,6),
    formulaid int
    );
    SELECT @sensorid = SENSOR_ID FROM inserted; --当前插入数据

    INSERT INTO @temp(id,sensorid, parameter1, parameter2 ,formulaid)
    SELECT ROW_NUMBER() OVER ( ORDER BY FORMAULA_SETID ) ID, SENSOR_ID,Parameter1,Parameter2 ,FORMULA_ID FROM T_DIM_FORMULAID_SET WHERE SENSOR_ID IN (
    SELECT SENSOR_ID FROM T_DIM_SENSOR where SAFETY_FACTOR_TYPE_ID = 120 AND IsDELETED = 0
    ) and FORMULA_ID !=0;

    declare @count int;
    select @count= COUNT(*) from @temp; --虚拟表多少条数据
    declare @index int =1;


    -- 声明变量
    DECLARE @senid INT , @formulaid int ,@id int;
    DECLARE @parameter1 decimal(18,6);
    DECLARE @parameter2 decimal(18,6);

    WHILE(@index<=@count) --循环
    begin
    DECLARE @a_id INT;
    -- 根据自增1的 id 字段进行对表 #@temp 进行查询,得到 ID
    SELECT @a_id =id, @senid= sensorid, @parameter1= parameter1,@parameter2 = parameter2,@formulaid = formulaid FROM @temp where id = @index;
    IF @formulaid = 6 ---减初值公式
    begin
    update T_THEMES_DEFORMATION_DEEP_DISPLACEMENT set DEEP_DISPLACEMENT_X_VALUE = (DEEP_DISPLACEMENT_X_VALUE -@parameter1),DEEP_DISPLACEMENT_Y_VALUE
    =(DEEP_DISPLACEMENT_Y_VALUE - @parameter2) WHERE ID =(
    SELECT TOP 1 ID FROM T_THEMES_DEFORMATION_DEEP_DISPLACEMENT WHERE SENSOR_ID = 1384 AND AGG_TYPE IS NULL order by ACQUISITION_DATETIME DESC
    )
    end

    SET @index=@index+1; --避免死循环
    end

  • 相关阅读:
    RabbitMq使用说明
    php使用rabbitmq需安装amqp拓展协议
    新建springboot web项目pom报错
    HttpRunner Manager 接口自动化平台搭建
    数据库存储过程进行批量插入数据
    Windows系统下Robot Framework的安装
    利用Charles模拟客户端弱网环境进行弱网测试
    JMeter进行简单的接口压测
    JMeter的安装和使用
    grep, sed 和 awk 学习总结
  • 原文地址:https://www.cnblogs.com/lvqianqian/p/14980338.html
Copyright © 2011-2022 走看看