Okay, stellen wir uns einen Fall vor, in dem dieser Fehler auftritt (da Sie Ihre Ansichtsdefinition nicht gezeigt haben).
Nehmen wir an, wir haben eine Ansicht:
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
versuchen wir jetzt:
DELETE from dbo.V1 where ImportantDate < DATEADD(day,-90,CURRENT_TIMESTAMP)
Wir erhalten den von Ihnen angezeigten Fehler (oder einen ähnlichen). Was wir also brauchen, ist ein Auslöser:
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')
Das Schreiben dieses Triggers wird erheblich komplexer, wenn es keine einfache Möglichkeit gibt, Zeilen aus deleted
zu korrelieren Pseudo-Tabelle, mit der Zeilen aus jeder Basistabelle gelöscht werden müssen.