我在表上创建一个更新触发器以审核数据更改...
使用的代码是:
DECLARE @P1 INT;
SET @P1 = 68235;
EXEC sp_prepexec
@P1 OUTPUT,
N'@P0 nvarchar(4000),@P1 bigint,@P2 bigint,@P3 bigint,@P4 bigint,@P5 bigint,@P6 bigint,@P7 bigint,@P8 bigint,@P9 bigint,@P10 bigint,@P11 bigint,@P12 bigint,@P13 bigint,@P14 bigint,@P15 bigint,@P16 bigint,@P17 bigint,@P18 bigint,@P19 bigint,@P20 bigint,@P21 bigint,@P22 bigint,@P23 bigint,@P24 bigint,@P25 bigint,@P26 bigint,@P27 bigint,@P28 bigint,@P29 bigint,@P30 nvarchar(4000)',
N'update table set irc_status=@P0 where (irc_id in (@P1 , @P2 , @P3 , @P4 , @P5 , @P6 , @P7 , @P8 , @P9 , @P10 , @P11 , @P12 , @P13 , @P14 , @P15 , @P16 , @P17 , @P18 , @P19 , @P20 , @P21 , @P22 , @P23 , @P24 , @P25 , @P26 , @P27 , @P28 , @P29)) and irc_status=@P30 ',
N'XXX',
58074,
58079,
58082,
58086,
58091,
58095,
57880,
57879,
57874,
57873,
57953,
57959,
57954,
57960,
57785,
57790,
57779,
57784,
59113,
59110,
59116,
59119,
75840,
75851,
75843,
75852,
75834,
75844,
75842,
N'YYY';
SELECT
@P1;
做一些测试并工作。。。当我在dbo.table中运行更新时。我在5月审核表table_log中插入了1个或更多行。 但是在一种奇怪的情况下...当Java应用程序运行特定的更新代码(由SQL Profiler捕获)时:
SELECT
*,
@USER,
@DATA,
0
FROM deleted;
源表已更新(受影响的6行)... 但是我的审计表(table_log)中没有行 在sql事件探查器中看起来很...我可以确认触发器已被赋值,但是在运行语句时
head.compare_exchange_weak(old, old(newptr))
SQL事件探查器显示0行受到影响...因此..提交了更新...(6 ros受到影响...触发了触发器...但有一个空的“已删除”逻辑表... 为什么?