Okay, lad os forestille os et tilfælde, hvor denne fejl opstår (da du ikke har vist din visningsdefinition).
Lad os antage, at vi har en visning:
CREATE VIEW dbo.V1
with schemabinding
as
select 'T1' as TabName,T1ID as ID,ImportantDate from dbo.T1
union all
select 'T2',T2ID,ImportantDate from dbo.T2
forsøger vi nu:
DELETE from dbo.V1 where ImportantDate < DATEADD(day,-90,CURRENT_TIMESTAMP)
vi får den fejl, du har vist (eller lignende). Så det, vi har brug for, er en trigger:
CREATE TRIGGER T_V1_D
on dbo.V1
instead of delete
as
set nocount on
delete from dbo.T1 where T1ID in (select ID from deleted where TabName = 'T1')
delete from dbo.T2 where T2ID in (select ID from deleted where TabName = 'T2')
Denne trigger bliver betydeligt mere kompleks at skrive, hvis der ikke er nogen nem måde at korrelere rækker fra den deleted
psuedo-tabel med hvilke rækker der skal slettes fra hver basistabel.