我想在mssqlcdc表中找到只更改了“ts”列的行。
因此,我找到了一些逻辑来检查特定列是否发生了更改(这是可行的),但我需要检查是否只有列ts发生了更改:
SET @colorder = sys.fn_cdc_get_column_ordinal('dbo_mytable', 'TS')
SELECT case when substring([__$update_mask],len([__$update_mask]) - ((@colorder-1)/8),1) & power(2,(@colorder-1)%8) > 0 then 1 else 0 end
FROM cdc.fn_cdc_get_all_changes_dbo_MYTABLE(@from_lsn, @to_lsn, 'all') PD
1条答案
按热度按时间osh3o9ms1#
我一直想写这样的函数已经有一段时间了,谢谢你给了我一个真正这么做的理由。
请自己做一些单元测试,我只做了一些非常基本的检查