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 Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

È 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 altre informazioni, 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 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, in Progettazione tabelle, fare clic su Attiva per istruzioni INSERTs e UPDATEs , quindi scegliere No dal menu a discesa.

  4. Fare clic su Close.

Uso di Transact-SQL

Per disabilitare un vincolo CHECK 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