触发器实现变更数据捕获

本文探讨了在遇到 truncate 语句导致变更数据捕获(CDC)程序出错的情况时,如何通过触发器来实现数据变更的捕获。然而,这种方法对批量插入(insert bulk)操作无效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

应用场景:变更数据捕获cdc当程序中出现truncate语句的时候,会导致程序报错不能正常执行。如果如果修改程序的话,可以通过触发器实现变更数据捕获

不足之处:对于insert bulk是不生效的。

--创建表存放列名
if  exists (select 1 from sys.tables where name like 'hb_columncollect')
drop table hb_columncollect
create table hb_columncollect(ffieldname nvarchar(100) ,fid int )
--存储过程用来拼写非计算列的列名   
if exists (select 1 from sys.objects where name='sp_columncollect_alter' and type='P')
drop  procedure sp_columncollect_alter
go
create  procedure sp_columncollect_alter
@ftablename nvarchar(100),
@string nvarchar(max) out
as
set nocount on  
delete from hb_columncollect
exec('insert into hb_columncollect(ffieldname,fid)
     select name,column_id from sys.columns t where object_id=OBJECT_ID('''+@ftablename+''') and is_computed<>1    order by column_id ')
set @string=''
select @string=@s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值