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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
-- TABLE INSERTVAL UPDATEVAL
if (object_id( 'DATA_SYNC_FH_DJ' , 'TR' is  not  null )
     drop  trigger  DATA_SYNC_FH_DJ
go
create  trigger  DATA_SYNC_FH_DJ
on  FH_DJ
     for  insert , update , delete
as
     declare 
     @oldUpdate  varchar (20),
     @newDate  varchar (20),
     @DJdanhao  varchar (20),
     @Djid  int ,
     @isInsert  bit ,
     @isUpdate  bit ,
     @isDelete  bit ;
     
     -- 判断是否为插入操作
     IF EXISTS( SELECT  FROM  inserted)  AND  NOT  EXISTS( SELECT  FROM  deleted)
BEGIN
SET  @isInsert = 1;
select  @Djid = djid  from  inserted;
END
ELSE
SET  @isInsert = 0
-- 判断是否为更新操作
IF EXISTS( SELECT  FROM  inserted)  AND  EXISTS( SELECT  FROM  deleted)
BEGIN
SET  @isUpdate = 1;
select  @Djid = djid  from  inserted;
END
ELSE
SET  @isUpdate = 0
-- 判断是否为删除操作
IF ( NOT  EXISTS( SELECT  FROM  inserted)  AND  EXISTS( SELECT  FROM  deleted))
BEGIN
SET  @isDelete = 1;
select  @DJdanhao = DJdanhao  from  deleted;
END
ELSE
SET  @isDelete = 0
     
     --更新前的数据
     select  @oldUpdate = F_SYNC_UPDATE  from  deleted;
     --通过应用程序修改时,F_SYNC_UPDATE=null或F_SYNC_UPDATE=0,此时不需要更新F_SYNC_DATE 时间戳,也不需要记录删除记录    
     if ((@oldUpdate  is  null or  (@oldUpdate = 0))
         begin
             --更新操作,更新时间戳F_SYNC_DATE=systimestamp和F_SYNC_UPDATE=null
             if (@isUpdate = 1)
insert  into  DATA_SYNC_B_OPERATOR (t_name, o_type, o_date, VKEYS)
values  ( 'FH_DJ' , 2, GETDATE(), @Djid);
--把新增加的记录插入到操作记录表
if (@isInsert = 1)
   insert  into  DATA_SYNC_B_OPERATOR (t_name, o_type, o_date, VKEYS)
   values  ( 'FH_DJ' , 1, GETDATE(), @Djid);
--把删除记录的主键添加到操作记录表
if (@isDelete = 1)
   insert  into  DATA_SYNC_B_OPERATOR (t_name, o_type, o_date, VKEYS)
   values  ( 'FH_DJ' , 3, GETDATE(),  'test@'  + @DJdanhao);
         end
go