Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर 2005 देखें पर डिलीट करने में असमर्थ

ठीक है, आइए एक उदाहरण की कल्पना करें जहां यह त्रुटि होगी (चूंकि आपने अपनी दृश्य परिभाषा नहीं दिखाई है)।

आइए मान लें कि हमारे पास एक दृश्य है:

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 से पंक्तियों को सहसंबंधित करने का कोई आसान तरीका नहीं है, तो यह ट्रिगर लिखने में काफी जटिल हो जाता है छद्म तालिका जिसके साथ प्रत्येक आधार तालिका से पंक्तियों को हटाना होगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं R2008 sql सर्वर पर मौजूदा संग्रहीत प्रक्रिया या उस प्रक्रिया के sql कथन को चलाकर सर्वर पर दस्तावेज़ कैसे बना सकता हूं

  2. क्या कोई विदेशी कुंजी स्वचालित रूप से एक अनुक्रमणिका बनाती है?

  3. मैं सक्रिय निर्देशिका उपयोगकर्ता के साथ SQL सर्वर 2008 में प्रमाणित कैसे कर सकता हूं लेकिन विंडोज प्रमाणीकरण के बिना

  4. मैं इकाई ढांचे में पैरामीटर सूँघने और/या क्वेरी संकेतों को कैसे नियंत्रित करूं?

  5. SQL सर्वर 2017 पर CLR सख्त सुरक्षा