随笔 - 89  文章 - 0  评论 - 2  阅读 - 11万 

需求:表A中插入/更新数据后,表B中也插入/更新当前数据。

插入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
USE [库名称]
GO
/****** Object:  Trigger 触发器名称  Script Date: 2020/12/30 11:15:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger 触发器名称 on 表A for insert
as
SET XACT_ABORT ON
DECLARE @startTime datetime
DECLARE @endTime datetime
set @startTime = dateadd(ms,0,DATEADD(dd, DATEDIFF(dd,0,getdate()), 0))
set @endTime = dateadd(ms,-3,DATEADD(dd, DATEDIFF(dd,-1,getdate()), 0))
insert into 表B
select  [F_PayID]
      ,[F_DeviceID]
      ,[F_CompanyID]
      ,[F_PayCode]
      ,[F_BillCode]
      ,[F_ScanType]
      ,[F_PayType]
      ,[F_PayStatus]
      ,[F_PayAmount]
      ,[F_Purpose]
      ,[F_PaySource]
      ,[F_PayTime]
      ,[F_RegisterAmount]
from inserted
where F_PayID not in (select F_PayID from 表B)
and F_PayTime >=@startTime and F_PayTime <=@endTime
if @@error<>0
begin
    rollback
    raiserror('cnanot change',1,2) with seterror
    return
end

  更新

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
USE 数据库名称
GO
/****** Object:  Trigger 触发器名称   Script Date: 2020/12/30 11:21:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER 触发器名称
ON 表A
AFTER UPDATE
AS
 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
 
    -- Insert statements for trigger here
    declare
               @F_PayID varchar(50),
               @F_PayType int,
               @F_PayAmount decimal(18,2),
               @F_PayTime datetime,
           @Count int;
 
     select
      @F_PayID =F_PayID,
      @F_PayType = F_PayType,
      @F_PayAmount=F_PayAmount,
      @F_PayTime = F_PayTime
      from inserted;
<br>             --如果表B中存在当前数据,则更新表B中的数据,若没有则更新表C中的数据
             select @Count = count(F_PayID) from 表B where F_PayID=@F_PayID ;
             if @Count>0
                update 表B set F_PayType=@F_PayType ,F_PayTime = @F_PayTime ,F_PayAmount = @F_PayAmount
                where F_PayID=@F_PayID ;
             else
                update 表C set F_PayType=@F_PayType ,F_PayTime = @F_PayTime ,F_PayAmount = @F_PayAmount
                where F_PayID=@F_PayID ;
 
END

  

 

posted on   我的梦想是开个小店  阅读(128)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示