我在这里和网上读到,触发器使用的特殊表
INSERTED
和DELETED
无法访问数据类型为TEXT
、NTEXT
或IMAGE
的列。我知道第一个响应是更改数据类型,但这是第三方数据库,所以我不能这样做。
似乎很容易获取
INSERTED
所保存的新数据,但我没有看到任何方法可以从 DELETED
表中获取数据。
有什么办法可以解决这个问题吗?我在网上寻找解决方法,但找不到任何解决方法。这是否意味着不可能?
这需要在
AFTER
、DELETE
或 INSERT
上运行的 UPDATE
触发器中完成。我无法使用 INSTEAD OF
触发器,因为我无法替换对表执行的 DELETE、INSERT 或 UPDATE 操作。我必须采取这个行动。
TEXT
列的计算列。公式使用 CAST
更改为数据类型 varchar(max)
。TEXT
列的计算列。该公式使用自定义标量函数更改为数据类型 varchar(max)
。我在网上搜索过,没有找到任何东西。
只需使用主键重新加入主表即可。
CREATE TRIGGER SomeTrigger ON SomeTable FOR INSERT
AS
SET NOCOUNT ON;
INSERT SomeOtherTable (value)
SELECT CAST(t.text_value AS varchar(max))
FROM inserted i
JOIN SomeTable t ON t.PK = i.PK;
理想情况下您应该更改列名称。
text
和 ntext
几乎不支持任何较新的 max
类型不支持的内容,所以我怀疑应用程序是否会注意到。