|
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
1
FROM
inserted)
AND
NOT
EXISTS(
SELECT
1
FROM
deleted)
BEGIN
SET
@isInsert = 1;
select
@Djid = djid
from
inserted;
END
ELSE
SET
@isInsert = 0
-- 判断是否为更新操作
IF EXISTS(
SELECT
1
FROM
inserted)
AND
EXISTS(
SELECT
1
FROM
deleted)
BEGIN
SET
@isUpdate = 1;
select
@Djid = djid
from
inserted;
END
ELSE
SET
@isUpdate = 0
-- 判断是否为删除操作
IF (
NOT
EXISTS(
SELECT
1
FROM
inserted)
AND
EXISTS(
SELECT
1
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
|
本文转自 乌英达姆 51CTO博客,原文链接:http://blog.51cto.com/7156680/1790838