MS SQL Server でのデータベース制約の一時管理
Microsoft SQL Server で制約を一時的に無効にすると、特にデータ転送時のデータベース操作を効率化できます。 このガイドでは、制約を一時的に無効化し、再度有効にする方法について詳しく説明します。
制約の無効化
個々のテーブル制約の無効化 (ALTER TABLE):
単一テーブルの制約を無効にするには、次のコマンドを使用します:
<code class="language-sql">ALTER TABLE tableName NOCHECK CONSTRAINT ALL;</code>
データベース全体の制約の無効化 (sp_msforeachtable):
このストアド プロシージャは、データベース内のすべてのテーブルの制約を無効にします:
<code class="language-sql">EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL';</code>
制約を再度有効にする
個々のテーブル制約の再有効化 (ALTER TABLE):
次のコマンドを使用して、特定のテーブルの制約を再度有効にします:
<code class="language-sql">ALTER TABLE tableName WITH CHECK CHECK CONSTRAINT ALL;</code>
データベース全体の制約の再有効化 (sp_msforeachtable):
このストアド プロシージャを使用して、データベース内のすべてのテーブルの制約を再度有効にします:
<code class="language-sql">EXEC sp_msforeachtable 'ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL';</code>
実際の応用
次の例は、データ コピー操作中に制約を一時的に無効にして再度有効にするプロセスを示しています。
<code class="language-sql">-- Disable constraints on TableA and TableB ALTER TABLE TableA NOCHECK CONSTRAINT ALL; ALTER TABLE TableB NOCHECK CONSTRAINT ALL; -- Copy data from TableA to TableB INSERT INTO TableB SELECT * FROM TableA; -- Re-enable constraints on TableA and TableB ALTER TABLE TableA WITH CHECK CHECK CONSTRAINT ALL; ALTER TABLE TableB WITH CHECK CHECK CONSTRAINT ALL;</code>
以上がMS SQL でデータベース制約を一時的に無効にして再度有効にする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。