INSERTED または DELETED から TEXT、NTEXT、または IMAGE フィールドにアクセスすることはできません。ただし、INSERTED で結合することにより、ベース テーブルからそれらにアクセスできます。 DELETE ではベース行が存在しなくなるため、これは INSERT と UPDATE でのみ機能します。
必要なことを実現するには、別のトリガーで、主キーと TEXT、NTEXT、および IMAGE 列をサイド テーブルにコピーします。
例えば
create table C1( accountNo int identity primary key, someColumn nvarchar(10), someNtext ntext ) create table C1_side( accountNo int primary key, someNtext ntext ) create trigger trgC1_IU on C1 AFTER INSERT, UPDATE as BEGIN -- Ensure side row exists insert C1_side(accountNo, someNtext) select accountNo from INSERTEd where not exists (select 1 from C1_side where C1_side.accountNo = inserted.accountNo) -- Copy NTEXT value to side row update C1_side set someNtext = c1.someNtext from C1_side inner join C1 on C1_side.accountNo = C1.accountNo inner join INSERTED on INSERTED.accountNo = C1.accountNo -- Could improve by checking if the column was updated for efficiency END
プレ>これで、DELETE トリガーで、DELETED を C1_side に結合して、ntext 列の前の値を読み取ることができます。 C1 に既に存在する行については、サイド テーブルの初期値を入力する必要があることに注意してください。