INSERT ステートメントまたは UPDATE ステートメントによる CHECK 制約の無効化

適用対象: SQL Server 2016 (13.x) 以降 Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

SQL Server では、SQL Server Management Studio または Transact-SQL を使用して INSERT および UPDATE トランザクションの CHECK 制約を無効にできます。 CHECK 制約を無効にすると、今後列に行われる挿入または更新は、制約条件に対して検証されません。 新しいデータが既存の制約に違反することがわかっている場合、またはデータベース内の既存のデータのみに制約を適用する場合に、このオプションを使用します。

詳細については、「CHECK 制約」を参照してください。

注意

CHECK 制約は ALTER TABLE ステートメントで有効または無効になります。これには常に、スキーマ変更ロック (Sch-M) が必要です。 Sch-M ロックを使うと、テーブルへの同時アクセスが防止されます。 詳細については、「ロックと ALTER TABLE」を参照してください。

アクセス許可

テーブルに対する ALTER 権限が必要です。

SQL Server Management Studio を使用する

INSERT ステートメントおよび UPDATE ステートメントの実行中に CHECK 制約を無効にするには

  1. オブジェクト エクスプローラーで、制約が設定されているテーブルを展開し、 [制約] フォルダーを展開します。

  2. 制約を右クリックし、 [変更]をクリックします。

  3. テーブル デザイナーの下にあるグリッドで、 [INSERT および UPDATE に適用] をクリックし、ドロップダウン メニューの [いいえ] をクリックします。

  4. [閉じる] をクリックします。

Transact-SQL の使用

INSERT ステートメントおよび UPDATE ステートメントの実行中に CHECK 制約を無効にするには

  1. オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。

  2. [標準] ツール バーの [新しいクエリ] をクリックします。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。

    USE AdventureWorks2022;  
    GO  
    ALTER TABLE Purchasing.PurchaseOrderHeader  
    NOCHECK CONSTRAINT CK_PurchaseOrderHeader_Freight;   
    GO