不能在'inserted'和'deleted'表中使用text,ntext或image列。
在这种情况下,解决方法应该是什么? :(
答案 0 :(得分:19)
从SQL Server 2005开始,TEXT/NTEXT/IMAGE
已弃用 - 您应该使用(N)VARCHAR(MAX)
和VARBINARY(MAX)
数据类型。
(N)VARCHAR(MAX)(参见MSDN docs here)和VARBINARY(MAX)允许最多2 GB的数据
来自MSDN文档:
nvarchar [(n | max)]
可变长度的Unicode字符数据。 n可以是1到1之间的值 4000。 max表示最大存储大小为2 ^ 31-1个字节。(= 2 GB)
(N)VARCHAR(MAX)类型也允许所有常用的T-SQL字符串函数对它们起作用 - 根本不是(N)TEXT的情况。
作为此MSDN article shows,触发器也支持替换类型:
SQL Server 2008不允许 text,ntext或image 列 插入和删除中的引用 AFTER触发器的表格。然而, 这些数据类型包括在内 仅向后兼容的目的。 大数据的首选存储 是使用 varchar(max), nvarchar(max)和 varbinary(max)数据 类型。 AFTER和INSTEAD OF 触发支持varchar(max), nvarchar(max)和varbinary(max)数据 在插入和删除的表中。
答案 1 :(得分:4)
这是解决方法:
SQL Trigger cannot do INSTEAD OF DELETE but is required for ntext, image columns
基本上,您需要将inserted
和/或deleted
伪表加入基础表并阅读NTEXT
,TEXT
或IMAGE
数据来自基础表格。