Как использовать столбцы text, ntext или image в «вставленных» и «удаленных» таблицах - PullRequest
10 голосов
/ 20 декабря 2009

Невозможно использовать столбцы text, ntext или image в таблицах «вставлено» и «удалено».

Каким должен быть обходной путь в этом случае? (

Ответы [ 2 ]

19 голосов
/ 20 декабря 2009

Начиная с SQL Server 2005, TEXT/NTEXT/IMAGE устарели - вместо них следует использовать типы данных (N)VARCHAR(MAX) и VARBINARY(MAX).

(N) VARCHAR (MAX) (см. Документы MSDN здесь ) и VARBINARY (MAX) допускают до 2 ГБ данных

Из документов MSDN:

nvarchar [(n | max)]

Данные символов Unicode переменной длины. n может быть значением от 1 до 4000. max указывает, что максимальный размер хранилища составляет 2 ^ 31-1 байт. (= 2 ГБ)

Типы (N) VARCHAR (MAX) также позволяют работать со всеми обычными строковыми функциями T-SQL, чего не было с (N) TEXT вообще.

Как показано в статье MSDN , типы замены также поддерживаются в триггерах:

SQL Server 2008 не допускает столбец text, ntext или image ссылки во вставленном и удаленном таблицы для триггеров AFTER. Тем не мение, эти типы данных включены для только в целях обратной совместимости. Предпочтительное хранилище для больших данных должен использовать varchar (max) , nvarchar (max) и varbinary (max) data типы. И ПОСЛЕ, и ВМЕСТО триггеры поддержка varchar (макс) , nvarchar (max) и varbinary (max) data во вставленных и удаленных таблицах.

4 голосов
/ 23 мая 2012

Это обходной путь:

Триггер SQL не может выполнить INSTEAD OF DELETE, но требуется для столбцов ntext, image

По сути, вам необходимо присоединить псевдотаблицы inserted и / или deleted к базовой таблице и прочитать данные NTEXT, TEXT или IMAGE из базовых таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...