Bien, imaginemos una instancia en la que ocurrirá este error (ya que no ha mostrado la definición de su vista).
Supongamos que tenemos una vista:
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
ahora intentamos:
DELETE from dbo.V1 where ImportantDate < DATEADD(day,-90,CURRENT_TIMESTAMP)
obtendremos el error que has mostrado (o similar). Entonces, lo que necesitamos es un disparador:
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')
Este disparador se vuelve considerablemente más complejo de escribir si no hay una manera fácil de correlacionar las filas del deleted
pseudotabla con la que se deben eliminar las filas de cada tabla base.