触发器实现前后两次录入数据是否1~0还是0~1变化,并将故障情况写入库

希望下列代码能够给初学sql的朋友提供帮助  

1表一:
CREATE TABLE [dbo].[A_Table_1](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [name] [nchar](10) NULL,
    [mystate] [nchar](10) NULL
) ON [PRIMARY]

GO

2表二:

CREATE TABLE [dbo].[A_Table_2](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [name] [nchar](10) NULL,
    [sub_state] [nchar](10) NULL,
    [main_state] [nchar](10) NULL
) ON [PRIMARY]

GO

3插入测试脚本:

INSERT INTO [dbo].[A_Table_1]
           ([name]
           ,[mystate])
     VALUES
           ('P'
           ,'0')
GO

4触发器实现前后两次录入数据是否1~0还是0~1变化,并将故障情况写入库

注意:派生表必须要有别名!

declare @state1 char(10) 
  set @state1 ='发生故障'
  declare @state2 char(10) 
  set @state2 = '已解决故障'
        declare @name char(50)  
        declare @state char(1) 
--最新第一条数据
    select top 1
         @name = name,
         @state = mystate   
     from [GQ].[dbo].[A_Table_1] ORDER BY id DESC
--最新第二条数据
      declare @second_state char(1) 
      select top 1 @second_state = mytab.mystate from (select top 2 * from [GQ].[dbo].[A_Table_1] order by id desc) as mytab  order by mytab.mystate asc     

if (@state='1' and @second_state<>'1') INSERT INTO [dbo].[A_Table_2] VALUES (@name,@state,@state1)
if (@state='0' and @second_state<>'1') INSERT INTO [dbo].[A_Table_2] VALUES (@name,@state,@state2)
  end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值