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

उन तालिकाओं में पंक्तियों को कैसे हटाएं जिनमें अन्य तालिकाओं के लिए विदेशी कुंजियाँ हों

सबसे पहले, एक बार के डेटा-स्क्रबिंग अभ्यास के रूप में, अनाथ पंक्तियों को हटा दें उदा।

DELETE 
  FROM ReferencingTable 
 WHERE NOT EXISTS (
                   SELECT * 
                     FROM MainTable AS T1
                    WHERE T1.pk_col_1 = ReferencingTable.pk_col_1
                  );

दूसरा, एक बार के स्कीमा-परिवर्तन अभ्यास के रूप में, ON DELETE CASCADE जोड़ें संदर्भ तालिका पर विदेशी कुंजी के लिए संदर्भात्मक कार्रवाई उदा।

ALTER TABLE ReferencingTable DROP 
   CONSTRAINT fk__ReferencingTable__MainTable;

ALTER TABLE ReferencingTable ADD 
   CONSTRAINT fk__ReferencingTable__MainTable 
      FOREIGN KEY (pk_col_1)
      REFERENCES MainTable (pk_col_1)
      ON DELETE CASCADE;

फिर, हमेशा के लिए, संदर्भ तालिका में पंक्तियों को स्वचालित रूप से हटा दिया जाएगा जब उनकी संदर्भित पंक्ति हटा दी जाएगी।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर डेटाबेस बदलें श्रोता सी #

  2. SQLCMD का उपयोग करके PostDeployment.sql स्क्रिप्ट में सशर्त तर्क

  3. एक स्क्रिप्ट का उपयोग करके एक्सेल शीट को अस्थायी तालिका में प्राप्त करें

  4. Row_Number () के साथ डायनेमिक पिवट की आवश्यकता

  5. SQL सर्वर में VARCHAR और NVARCHAR में क्या अंतर है - SQL सर्वर / T-SQL ट्यूटोरियल भाग 32