Creare vincoli CHECKCreate Check Constraints

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)sìDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

È possibile creare un vincolo CHECK in una tabella per specificare i valori di dati accettabili in una o più colonne in SQL Server 2017SQL Server 2017 utilizzando SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.You can create a check constraint in a table to specify the data values that are acceptable in one or more columns in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Sicurezza Security

Autorizzazioni Permissions

È necessario disporre delle autorizzazioni ALTER per la tabella.Requires ALTER permissions on the table.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per creare un nuovo vincolo CHECKTo create a new check constraint

  1. In Esplora oggettiespandere la tabella a cui si vuole aggiungere un vincolo CHECK, fare clic con il pulsante destro del mouse su Vincoli e scegliere Nuovo vincolo.In Object Explorer, expand the table to which you want to add a check constraint, right-click Constraints and click New Constraint.

  2. Nella finestra di dialogo Vincoli CHECK fare clic nel campo Espressione e quindi fare clic sui puntini di sospensione (...).In the Check Constraints dialog box, click in the Expression field and then click the ellipses (…).

  3. Nella finestra di dialogo Espressione vincolo CHECK immettere le espressioni SQL per il vincolo CHECK:In the Check Constraint Expression dialog box, type the SQL expressions for the check constraint. Ad esempio per limitare le voci nella colonna SellEndDate della tabella Product a un valore che è maggiore o uguale alla data nella colonna SellStartDate o è un valore NULL, digitare:For example, to limit the entries in the SellEndDate column of the Product table to a value that is either greater than or equal to the date in the SellStartDate column or is a NULL value, type:

    SellEndDate >= SellStartDate OR SellEndDate IS NULL  
    

    In alternativa, per richiedere l'immissione di un valore composto da 5 cifre nella colonna zip , digitare:Or, to require entries in the zip column to be 5 digits, type:

    zip LIKE '[0-9][0-9][0-9][0-9][0-9]'  
    
    Nota

    Tutti i valori di vincolo non numerici devono essere racchiusi tra virgolette singole (').Make sure to enclose any non-numeric constraint values in single quotation marks (').

  4. Scegliere OK.Click OK.

  5. Nella categoria Identità è possibile modificare il nome del vincolo CHECK e aggiungere una descrizione (proprietà estesa) per il vincolo.In the Identity category, you can change the name of the check constraint and add a description (extended property) for the constraint.

  6. Nella categoria Progettazione tabelle è possibile impostare quando deve essere applicato il vincolo.In the Table Designer category, you can set when the constraint is enforced.

    A:To: Selezionare Sì nei seguenti campi:Select Yes in the Following Fields:
    Testare il vincolo su dati che esistevano prima di creare il vincoloTest the constraint on data that existed before you created the constraint Verificare i dati esistenti durante la creazione o l'abilitazioneCheck Existing Data On Creation Or Enabling
    Applicare il vincolo quando si verifica un'operazione di replica su questa tabellaEnforce the constraint whenever a replication operation occurs on this table Applicare per replicaEnforce For Replication
    Applicare il vincolo ogni qualvolta una riga di questa tabella viene inserita o viene aggiornataEnforce the constraint whenever a row of this table is inserted or updated Attiva per istruzioni INSERTs e UPDATEsEnforce For INSERTs And UPDATEs
  7. Scegliere Chiudi.Click Close.

Utilizzo di Transact-SQL Using Transact-SQL

Per creare un nuovo vincolo CHECKTo create a new check constraint

  1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine.

  2. Sulla barra Standard fare clic su Nuova query.On the Standard bar, click New Query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.Copy and paste the following example into the query window and click Execute.

    ALTER TABLE dbo.DocExc   
       ADD ColumnD int NULL   
       CONSTRAINT CHK_ColumnD_DocExc   
       CHECK (ColumnD > 10 AND ColumnD < 50);  
    GO  
    -- Adding values that will pass the check constraint  
    INSERT INTO dbo.DocExc (ColumnD) VALUES (49);  
    GO  
    -- Adding values that will fail the check constraint  
    INSERT INTO dbo.DocExc (ColumnD) VALUES (55);  
    GO  
    

    Per altre informazioni, vedere ALTER TABLE (Transact-SQL).For more information, see ALTER TABLE (Transact-SQL).