Добре, нека си представим един случай, в който ще възникне тази грешка (тъй като не сте показали дефиницията на вашия изглед).
Да приемем, че имаме изглед:
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
сега правим опит:
DELETE from dbo.V1 where ImportantDate < DATEADD(day,-90,CURRENT_TIMESTAMP)
ще получим грешката, която сте показали (или подобна). Така че това, от което се нуждаем, е тригер:
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')
Този тригер става значително по-сложен за писане, ако няма лесен начин за корелиране на редове от deleted
псевдо-таблица, с която трябва да се изтрият редове от всяка базова таблица.