Creazione di chiavi primarieCreate Primary Keys

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

Per il contenuto relativo alle versioni precedenti di SQL Server, vedere Creazione di chiavi primarie.For content related to previous versions of SQL Server, see Create Primary Keys.

È possibile definire una chiave primaria in SQL Server 2017SQL Server 2017 tramite SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.You can define a primary key in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. Con la creazione di una chiave primaria è possibile creare automaticamente un indice univoco corrispondente, cluster o non cluster.Creating a primary key automatically creates a corresponding unique, clustered or nonclustered index.

Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Limitazioni e restrizioni Limitations and Restrictions

  • In una tabella è possibile includere un solo vincolo PRIMARY KEY.A table can contain only one PRIMARY KEY constraint.

  • Tutte le colonne specificate in un vincolo PRIMARY KEY devono essere definite come NOT NULL.All columns defined within a PRIMARY KEY constraint must be defined as NOT NULL. Se non si specifica il supporto di valori Null, per tutte le colonne coinvolte in un vincolo PRIMARY KEY viene impostato NOT NULL.If nullability is not specified, all columns participating in a PRIMARY KEY constraint have their nullability set to NOT NULL.

Sicurezza Security

Autorizzazioni Permissions

Per la creazione di una nuova tabella con una chiave primaria è richiesta l'autorizzazione CREATE TABLE per il database e l'autorizzazione ALTER per lo schema in cui viene creata la tabella.Creating a new table with a primary key requires CREATE TABLE permission in the database and ALTER permission on the schema in which the table is being created.

Per la creazione di una chiave primaria in una tabella esistente è richiesta l'autorizzazione ALTER per la tabella.Creating a primary key in an existing table requires ALTER permission on the table.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per creare una chiave primariaTo create a primary key

  1. In Esplora oggetti fare clic con il pulsante destro del mouse sulla tabella nella quale aggiungere un vincolo univoco e scegliere Progetta.In Object Explorer, right-click the table to which you want to add a unique constraint, and click Design.

  2. In Progettazione tabellefare clic sul selettore di riga per la colonna di database che si desidera definire come chiave primaria.In Table Designer, click the row selector for the database column you want to define as the primary key. Per selezionare più colonne, tenere premuto il tasto CTRL e fare clic sul selettore di riga delle altre colonne.If you want to select multiple columns, hold down the CTRL key while you click the row selectors for the other columns.

  3. Fare clic con il pulsante destro del mouse sul selettore di riga per la colonna e selezionare Imposta chiave primaria.Right-click the row selector for the column and select Set Primary Key.

Attenzione

Per ridefinire la chiave primaria, sarà necessario eliminare tutte le relazioni alla chiave primaria esistente prima di poterne creare una nuova.If you want to redefine the primary key, any relationships to the existing primary key must be deleted before the new primary key can be created. Verrà visualizzato un messaggio di avviso in cui si notificherà che nel corso del processo le relazioni esistenti verranno eliminate automaticamente.A message will warn you that existing relationships will be automatically deleted as part of this process.

Una colonna chiave primaria è contrassegnata da un simbolo di chiave primaria nel corrispondente selettore di riga.A primary key column is identified by a primary key symbol in its row selector.

Se una chiave primaria è composta da più colonne, è consentita la presenza di valori duplicati in una colonna ma è comunque richiesta l'univocità delle combinazioni di valori tratti da tutte le colonne nella chiave primaria.If a primary key consists of more than one column, duplicate values are allowed in one column, but each combination of values from all the columns in the primary key must be unique.

Se si definisce una chiave composta, l'ordine delle colonne nella chiave primaria corrisponderà all'ordine delle colonne come visualizzate nella tabella.If you define a compound key, the order of columns in the primary key matches the order of columns as shown in the table. È comunque possibile modificare l'ordine delle colonne dopo la creazione della chiave primaria.However, you can change the order of columns after the primary key is created. Per altre informazioni, vedere Modifica chiavi primarie.For more information, see Modify Primary Keys.

Utilizzo di Transact-SQL Using Transact-SQL

Per creare una chiave primaria in una tabella esistenteTo create a primary key in an existing table

  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. Nell'esempio si crea una chiave primaria nella colonna TransactionID.The example creates a primary key on the column TransactionID.

    USE AdventureWorks2012;  
    GO  
    ALTER TABLE Production.TransactionHistoryArchive   
    ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID);  
    GO  
    

Per creare una chiave primaria in una nuova tabellaTo create a primary key in a new table

  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. Nell'esempio si crea una tabella e si definisce una chiave primaria nella colonna TransactionID.The example creates a table and defines a primary key on the column TransactionID.

    USE AdventureWorks2012;  
    GO  
    CREATE TABLE Production.TransactionHistoryArchive1  
    (  
       TransactionID int NOT NULL,  
       CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID)  
    );  
    GO  
    

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