sql >> データベース >  >> RDS >> Sqlserver

制約を無視して、SQL Server テーブルのリストを削除する方法は?

    テーブルを削除する方法によって異なります。テーブルのリストを削除する必要がある場合、DB の下のテーブルのほぼ 20% をカバーします。

    次に、スクリプトでその DB のすべての制約を無効にし、テーブルを削除して、同じスクリプトで制約を有効にします。

    --To Disable a Constraint at DB level
    
    EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
    
    --Write the code to DROP tables
    
    DROP TABLE TABLENAME
    
    DROP TABLE TABLENAME
    
    DROP TABLE TABLENAME
    
    --To Enable a Constraint at DB level
    
    EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
      

    最後に、制約のステータスを確認するために、このクエリを起動します。

    --Checks the Status of Constraints
    
    SELECT (CASE 
        WHEN OBJECTPROPERTY(CONSTID, 'CNSTISDISABLED') = 0 THEN 'ENABLED'
        ELSE 'DISABLED'
        END) AS STATUS,
        OBJECT_NAME(CONSTID) AS CONSTRAINT_NAME,
        OBJECT_NAME(FKEYID) AS TABLE_NAME,
        COL_NAME(FKEYID, FKEY) AS COLUMN_NAME,
        OBJECT_NAME(RKEYID) AS REFERENCED_TABLE_NAME,
        COL_NAME(RKEYID, RKEY) AS REFERENCED_COLUMN_NAME
    FROM SYSFOREIGNKEYS
    ORDER BY TABLE_NAME, CONSTRAINT_NAME,REFERENCED_TABLE_NAME, KEYNO
      

    データベース レベルで制約を無効にしたくない場合は、削除するテーブルのリストを作成してください。

    Step1 :テーブルに関連付けられている制約を確認します

    SELECT * 
    FROM sys.foreign_keys
    WHERE referenced_object_id = object_id('dbo.Tablename')
      

    ステップ 2 :これらのテーブルに関連付けられている制約を無効にします。

    ALTER TABLE MyTable NOCHECK CONSTRAINT MyConstraint
      

    ステップ 3 :テーブルを削除する

    DROP TABLE TABLENAME
      

    1. PostgreSQL DigitalOceanのパフォーマンスと価格の比較–ScaleGridとDigitalOceanマネージドデータベース

    2. RubyonRailsの2番目のMySQLデータベースへの動的接続

    3. 日付と時刻の列を連結してタイムスタンプを取得します

    4. mysql_insert_idを信頼できますか?