Condividi tramite


Disabilitare i vincoli CHECK con le istruzioni INSERT e UPDATE

si applica a: SQL Server 2016 (13.x) e versioni successive database SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)database SQL in Microsoft Fabric

È possibile disabilitare un vincolo CHECK per le transazioni INSERT e UPDATE in SQL Server usando SQL Server Management Studio o Transact-SQL. Dopo aver disabilitato i vincoli CHECK, gli inserimenti o gli aggiornamenti successivi della colonna non saranno convalidati in base alle condizioni del vincolo. Usare questa opzione se si è sicuri che i nuovi dati violeranno il vincolo esistente o se il vincolo si applica solo ai dati già presenti nel database.

Per più informazione, vedere Vincoli CHECK.

Nota

I vincoli CHECK sono abilitati e disabilitati con un'istruzione ALTER TABLE, che richiede sempre un blocco di modifica dello schema (Sch-M). I blocchi di tipo Sch-M impediscono l'accesso simultaneo alla tabella. Per altre informazioni, vedere Blocchi e ALTER TABLE.

Autorizzazioni

È necessario disporre dell'autorizzazione ALTER per la tabella.

Utilizzo di SQL Server Management Studio

Per disabilitare un vincolo CHECK per le istruzioni INSERT e UPDATE

  1. In Esplora oggetti, espandere la tabella contenente il vincolo che si desidera modificare, quindi espandere la cartella Vincoli .

  2. Fare clic con il pulsante destro del mouse sul vincolo e selezionare Modifica.

  3. Nella griglia sotto Progettazione tabelle, fai clic su Applica per INSERT e UPDATE e seleziona No dal menu a tendina.

  4. Fare clic su Close.

Uso di Transact-SQL

Per disabilitare un vincolo di controllo per le istruzioni INSERT e UPDATE

  1. In Esplora oggetti, connettersi a un'istanza del motore di database.

  2. Sulla barra Standard fare clic su Nuova query.

  3. Copiare e incollare gli esempi seguenti nella finestra Query, quindi fare clic su Esegui.

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