ठीक है, आइए एक उदाहरण की कल्पना करें जहां यह त्रुटि होगी (चूंकि आपने अपनी दृश्य परिभाषा नहीं दिखाई है)।
आइए मान लें कि हमारे पास एक दृश्य है:
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
से पंक्तियों को सहसंबंधित करने का कोई आसान तरीका नहीं है, तो यह ट्रिगर लिखने में काफी जटिल हो जाता है छद्म तालिका जिसके साथ प्रत्येक आधार तालिका से पंक्तियों को हटाना होगा।