元のテーブルにntextフィールドがあるため、「挿入されたテーブルと削除されたテーブルでテキスト、ntext、または画像の列を使用できません」というエラーが発生しました。トリガーをアタッチしました。
解決策は次のとおりです。 http://lazycodeprogrammer.blogspot.com/2009/08/how-to-use-inserteddeleted-with.html
ただし、元の(変更されていない)クエリは十分に複雑です。推奨されているように、JOIN演算子を使用してSELECT * FROM INSERTEDの代わりに何を書く必要がありますか?
素晴らしい解決策が見つかりました:
本当の問題は、挿入されたテーブルでntext、text、またはimageタイプの列を選択しようとしていることです。これはトリガーでは許可されていません。
実際の解決策は、MSの提案に従って、すべてのntextをnvarchar(max)に、textをvarchar(max)に、imageをvarbinary(max)に変更することです。
MSは、これらのタイプは非推奨であり、将来のバージョンで削除されると述べています。
また、行内のデータがないため、ntextのパフォーマンスは非常に遅くなります。
「INSTEADOF」トリガーを使用すると、テキスト、ntext、および画像フィールドが「挿入」テーブルと「削除」テーブルで使用できるため、問題が解決する場合があります。 http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=148387 を見て、どのように実行できるかを確認してください。
yourtable
に挿入した後、次のトリガーを使用します。
SELECT textfields
FROM yourtable
WHERE EXISTS (
SELECT 1
FROM {inserted/deleted}
WHERE {inserted/deleted}.PK = {yourtable}.PK
)