आप INSERTED या DELETED से TEXT, NTEXT या IMAGE फ़ील्ड तक नहीं पहुँच सकते। हालाँकि आप INSERTED के साथ जुड़कर उन्हें आधार तालिका से एक्सेस कर सकते हैं। यह केवल INSERT और UPDATE के लिए काम करता है क्योंकि DELETE में आधार पंक्ति अब मौजूद नहीं है।
आपको जो चाहिए वह प्राप्त करने के लिए, किसी अन्य ट्रिगर में, प्राथमिक कुंजी और टेक्स्ट, 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 ट्रिगर में, आप ntext कॉलम के पिछले मान को पढ़ने के लिए DELETED को C1_side में शामिल कर सकते हैं। ध्यान दें कि C1 में पहले से मौजूद पंक्तियों के लिए आपको अपनी साइड टेबल के लिए प्रारंभिक मान भरने होंगे।