如何在"inserted"和"deleted"表中使用text,ntext或image列

Duc*_*tal 10 sql-server triggers sql-server-2008

无法在"inserted"和"deleted"表中使用text,ntext或image列.

在这种情况下应该采取哪些解决方法?:(

mar*_*c_s 19

从SQL Server 2005开始,TEXT/NTEXT/IMAGE不推荐使用 - 您应该使用(N)VARCHAR(MAX)VARBINARY(MAX)数据类型.

(N)VARCHAR(MAX)(参见此处的MSDN文档)和VARBINARY(MAX)允许最多2 GB的数据

来自MSDN文档:

nvarchar [(n | max)]

可变长度的Unicode字符数据.n可以是1到4,000之间的值.max表示最大存储大小为2 ^ 31-1个字节.(= 2 GB)

该(N)VARCHAR(MAX)类型也允许所有常见的T-SQL字符串函数对他们的工作 - 这是不符合(N)TEXT在所有的情况.

正如本MSDN文章所示,触发器也支持替换类型:

SQL Server 2008不允许 在AFTER触发器的inserted和deleted表中引用text,ntext或image列.但是,包含这些数据类型仅用于向后兼容目的.大数据的首选存储是使用varchar(max), nvarchar(max)varbinary(max)数据类型.AFTER和INSTEAD OF触发器都支持插入和删除表中的varchar(max), nvarchar(max)和varbinary(max)数据.