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

DELETE CASCADE पर जोड़ने के लिए सभी विदेशी कुंजियों को बदलने के लिए SQL स्क्रिप्ट

यहां एक स्क्रिप्ट है जिसका मैंने एक समान उद्देश्य के लिए उपयोग किया है। यह समग्र विदेशी कुंजियों का समर्थन नहीं करता है (जो एक से अधिक फ़ील्ड का उपयोग करती हैं।) और आपकी स्थिति के लिए काम करने से पहले इसे शायद कुछ ट्वीकिंग की आवश्यकता होगी। संपादित करें:विशेष रूप से यह बहु-स्तंभ विदेशी कुंजियों को सही ढंग से संभाल नहीं पाता है।

select
  DropStmt = 'ALTER TABLE [' + ForeignKeys.ForeignTableSchema + 
      '].[' + ForeignKeys.ForeignTableName + 
      '] DROP CONSTRAINT [' + ForeignKeys.ForeignKeyName + ']; '
,  CreateStmt = 'ALTER TABLE [' + ForeignKeys.ForeignTableSchema + 
      '].[' + ForeignKeys.ForeignTableName + 
      '] WITH CHECK ADD CONSTRAINT [' +  ForeignKeys.ForeignKeyName + 
      '] FOREIGN KEY([' + ForeignKeys.ForeignTableColumn + 
      ']) REFERENCES [' + schema_name(sys.objects.schema_id) + '].[' +
  sys.objects.[name] + ']([' +
  sys.columns.[name] + ']) ON DELETE CASCADE; '
 from sys.objects
  inner join sys.columns
    on (sys.columns.[object_id] = sys.objects.[object_id])
  inner join (
    select sys.foreign_keys.[name] as ForeignKeyName
     ,schema_name(sys.objects.schema_id) as ForeignTableSchema
     ,sys.objects.[name] as ForeignTableName
     ,sys.columns.[name]  as ForeignTableColumn
     ,sys.foreign_keys.referenced_object_id as referenced_object_id
     ,sys.foreign_key_columns.referenced_column_id as referenced_column_id
     from sys.foreign_keys
      inner join sys.foreign_key_columns
        on (sys.foreign_key_columns.constraint_object_id
          = sys.foreign_keys.[object_id])
      inner join sys.objects
        on (sys.objects.[object_id]
          = sys.foreign_keys.parent_object_id)
        inner join sys.columns
          on (sys.columns.[object_id]
            = sys.objects.[object_id])
           and (sys.columns.column_id
            = sys.foreign_key_columns.parent_column_id)
    ) ForeignKeys
    on (ForeignKeys.referenced_object_id = sys.objects.[object_id])
     and (ForeignKeys.referenced_column_id = sys.columns.column_id)
 where (sys.objects.[type] = 'U')
  and (sys.objects.[name] not in ('sysdiagrams'))


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सी # से डेटाबेस को कैसे पुनर्स्थापित करें

  2. SQL सर्वर में OBJECTPROPERTY () का उपयोग करके जांचें कि क्या कोई ऑब्जेक्ट एक संग्रहीत प्रक्रिया है

  3. sql सर्वर आपके डेटा को कैसे सॉर्ट करता है?

  4. SQL सर्वर में "केवल एक अभिव्यक्ति को चयन सूची में निर्दिष्ट किया जा सकता है ..." को कैसे ठीक करें?

  5. वितरित डेटाबेस लेनदेन बनाम क्रॉस डेटाबेस लेनदेन