我们在视图上有一个 insted 触发器(用于 DML 操作)。我们正在尝试使用 CDC 表监视视图上的活动,并且我们已将基表(视图所基于的表)定义为 CDC 表。
当我们在视图上运行更新命令(而不是触发器被触发)时,cdc 表中的输出是删除一行和更新一行(操作码 1,然后是操作码 2),我们希望找到一行带有值bedore(操作码3)和一行带有之后的值(操作码4)。
你知道这是否是更新发生时的正常行为,而不是在幕后触发触发器(删除旧记录并插入新记录)?
谢谢帮助。
我们在视图上有一个 insted 触发器(用于 DML 操作)。我们正在尝试使用 CDC 表监视视图上的活动,并且我们已将基表(视图所基于的表)定义为 CDC 表。
当我们在视图上运行更新命令(而不是触发器被触发)时,cdc 表中的输出是删除一行和更新一行(操作码 1,然后是操作码 2),我们希望找到一行带有值bedore(操作码3)和一行带有之后的值(操作码4)。
你知道这是否是更新发生时的正常行为,而不是在幕后触发触发器(删除旧记录并插入新记录)?
谢谢帮助。
任何更新都可以实现为拆分更新(删除旧值,插入新值)。查询处理器通常这样做是为了保护万圣节保护(您今天必须发布您的问题!)。您的特定更新有一个广泛的计划(拆分更新)。你应该时刻准备好处理这种情况,所以它为什么发生并不重要。是否具有替代更新触发器是否会强制执行广泛的计划是一个正交问题。