由于复制表中已弃用的数据类型,触发器不起作用

时间:2012-10-17 09:59:49

标签: sql sql-server triggers merge-replication

我的SQL Server 2005数据库中有一个表,其中包含一个数据类型为NTEXT的字段。此表在具有大量SQLCE订阅的合并复制中进行复制。

我尝试在此表中添加ON INSERT触发器来处理NTEXT字段。但我得到了这个错误:

Cannot use text, ntext, or image columns in the 'inserted' and 'deleted' tables.

在我的研究中,我发现了一些不推荐使用NTEXT的帖子,我应该更改为NVARCHAR(MAX)。但是如果没有重新创建快照,我就无法做到这一点,对于使用这些设备的人来说这是一个非常大的问题(因为数据量和时间)。

insert-trigger是否有解决方法来处理数据类型?

这是抛出错误的地方:

DECLARE c1 CURSOR FOR SELECT ControlValue FROM INSERTED

1 个答案:

答案 0 :(得分:1)

您可以通过读取基础表中的数据,加入INSERTED来实现此目的。

这是解决方法:

DECLARE c1 CURSOR FOR SELECT t.ControlValue 
from INSERTED i 
  INNER JOIN TableName t on i.PrimaryKey = t.PrimaryKey

基本上,您需要将inserted和/或deleted伪表加入基础表并阅读NTEXTTEXTIMAGE数据来自基础表格。