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

TSQLを使用して、データベース内のすべてのテーブルをどのように切り捨てますか?

    外部キー関係を持つテーブルからのデータの削除を処理する場合(基本的には適切に設計されたデータベースの場合)、すべての制約を無効にし、すべてのデータを削除してから、制約を再度有効にすることができます

    -- disable all constraints
    EXEC sp_MSForEachTable "ALTER TABLE ? NOCHECK CONSTRAINT all"
    
    -- delete data in all tables
    EXEC sp_MSForEachTable "DELETE FROM ?"
    
    -- enable all constraints
    exec sp_MSForEachTable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
    

    制約とトリガーの無効化について詳しくは、こちらをご覧ください

    一部のテーブルにID列がある場合は、それらを再シードすることをお勧めします

    EXEC sp_MSForEachTable "DBCC CHECKIDENT ( '?', RESEED, 0)"
    

    RESEEDの動作は、新しいテーブルと、以前にBOLからデータが挿入されたテーブルとでは異なることに注意してください。

    DBCC CHECKIDENT('table_name'、RESEED、newReseedValue)

    現在のID値はnewReseedValueに設定されます。作成されてからテーブルに行が挿入されていない場合、DBCC CHECKIDENTの実行後に挿入された最初の行は、IDとしてnewReseedValueを使用します。それ以外の場合、挿入された次の行はnewReseedValue + 1を使用します。newReseedValueの値がID列の最大値よりも小さい場合、エラーメッセージ2627は、テーブルへの後続の参照で生成されます。

    制約を無効にすると切り捨てを使用できないという事実を指摘してくれたRobertに感謝します。制約を削除してから、再作成する必要があります



    1. SQL Serverでselectクエリを使用してテーブルを作成するにはどうすればよいですか?

    2. 単純な挿入ステートメントを使用して、バイナリファイルデータをバイナリSQLフィールドに挿入するにはどうすればよいですか?

    3. データベースのディスク容量の計画

    4. JDBCインターフェースを介してUTF-8文字列をMySQLに正しく書き込む方法