U heeft geen toegang tot de velden TEKST, NTEXT of AFBEELDING vanuit INSERTED of DELETED. U kunt ze echter openen vanuit de basistabel door lid te worden met INSERTED. Dit werkt alleen voor INSERT en UPDATE omdat in een DELETE de basisrij niet meer bestaat.
Om te bereiken wat u nodig hebt, kopieert u in een andere trigger de primaire sleutel en de kolommen TEXT, NTEXT en IMAGE naar een zijtabel.
Bijvoorbeeld
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
Nu, in uw DELETE-trigger, kunt u DELETED toevoegen aan C1_side om de vorige waarde van de ntext-kolom te lezen. Houd er rekening mee dat u de beginwaarden voor uw bijzettafel moet invullen voor rijen die al bestaan in C1.