Share via


Creazione e modifica di colonne identificatore

Data aggiornamento: 14 aprile 2006

È possibile creare una sola colonna identificatore e una sola colonna GUID per ogni tabella.

Proprietà IDENTITY

È possibile implementare colonne identificatore utilizzando la proprietà IDENTITY. Ciò consente allo sviluppatore di specificare sia un valore Identity per la prima riga inserita nella tabella (valore di inizializzazione Identity), sia un incremento (incremento valore Identity) da aggiungere al valore di inizializzazione per determinare i successivi valori Identity. Quando vengono inseriti valori in una tabella con un colonna identificatore, Motore di database di SQL Server 2005 genera automaticamente il successivo valore Identity sommando l'incremento al valore di inizializzazione. Quando si aggiungono colonne identificatore alle tabelle esistenti, i valori Identity vengono aggiunti alle righe esistenti della tabella e i valori di inizializzazione e di incremento vengono applicati seguendo l'ordine originale di aggiunta di tali righe. Vengono inoltre generati valori Identity per tutte le nuove righe aggiunte. Non è possibile modificare una colonna di tabella esistente per aggiungervi la proprietà IDENTITY.

Quando si utilizza la proprietà IDENTITY per definire una colonna identificatore, considerare quanto segue:

  • Per una tabella può essere definita una sola colonna con la proprietà IDENTITY e tale colonna deve essere definita utilizzando un tipo di dati decimal, int, numeric, smallint, bigint o tinyint.

  • È possibile specificare il valore di inizializzazione e l'incremento. Il valore predefinito per entrambi è 1.

  • La colonna identificatore non deve consentire valori Null e non deve includere una definizione o un oggetto DEFAULT.

  • È possibile fare riferimento alla colonna in un elenco di selezione utilizzando la parola chiave $IDENTITY dopo avere impostato la proprietà IDENTITY. È inoltre possibile fare riferimento alla colonna con il nome.

  • È possibile utilizzare la funzione OBJECTPROPERTY per determinare se in una tabella è disponibile una colonna IDENTITY ed è possibile utilizzare la funzione COLUMNPROPERTY per determinare il nome della colonna IDENTITY.

  • È possibile utilizzare SET IDENTITY_INSERT per disabilitare la proprietà IDENTITY di una colonna consentendo l'inserimento esplicito dei valori.

    [!NOTA] Se esiste una colonna identificatore in una tabella in cui vengono eseguite spesso eliminazioni, è possibile che la sequenza di valori Identity presenti interruzioni. I valori Identity eliminati non vengono riutilizzati. Per evitare queste interruzioni, non utilizzare la proprietà IDENTITY. In alternativa è possibile creare un trigger che determini un nuovo valore identificatore in base ai valori esistenti nella colonna identificatore man mano che vengono inserite righe.

Identificatori univoci globali

Sebbene la proprietà IDENTITY automatizzi la numerazione delle righe all'interno di una tabella, è possibile che tabelle distinte, ognuna con la propria colonna identificatore, generino gli stessi valori. L'univocità della proprietà IDENTITY è infatti garantita soltanto per la tabella nella quale viene utilizzata. Se si desidera che un'applicazione generi una colonna identificatore univoca in tutto il database o in tutti i database presenti in tutti i computer in rete nel mondo, utilizzare il tipo di dati uniqueidentifier e la funzione NEWID (Transact-SQL) o NEWSEQUENTIALID(). Motore di database non genera automaticamente i valori per la colonna. Per inserire un valore univoco globale, creare una definizione DEFAULT nella colonna che utilizza la funzione NEWID o NEWSEQUENTIALID per generare un valore univoco globale.

È possibile fare riferimento alla colonna in un elenco di selezione utilizzando la parola chiave $ROWGUID dopo avere impostato la proprietà ROWGUIDCOL. Questa operazione è simile al metodo che consente di fare riferimento a una colonna IDENTITY utilizzando la parola chiave $IDENTITY. Una tabella può contenere una sola colonna ROWGUIDCOL e tale colonna deve essere definita utilizzando il tipo di dati uniqueidentifier.

È possibile utilizzare la funzione OBJECTPROPERTY (Transact-SQL) per determinare se una tabella dispone di una colonna ROWGUIDCOL e la funzione COLUMNPROPERTY (Transact-SQL) per determinare il nome della colonna ROWGUIDCOL.

Nell'esempio seguente viene creata una tabella con una colonna di tipo uniqueidentifier come chiave primaria. Nell'esempio viene utilizzata la funzione NEWSEQUENTIALID() nel vincolo DEFAULT per fornire valori per nuove righe. La proprietà ROWGUIDCOL viene applicata alla colonna di tipo uniqueidentifier in modo da potervi fare riferimento tramite la parola chiave $ROWGUID.

CREATE TABLE dbo.Globally_Unique_Data
(guid uniqueidentifier CONSTRAINT Guid_Default DEFAULT NEWSEQUENTIALID() ROWGUIDCOL,
    Employee_Name varchar(60)
CONSTRAINT Guid_PK PRIMARY KEY (guid) );

Per creare una nuova colonna identificatore quando si crea una tabella

CREATE TABLE (Transact-SQL)

Per creare una nuova colonna identificatore in una tabella esistente

ALTER TABLE (Transact-SQL)

Per eliminare una colonna identificatore

ALTER TABLE (Transact-SQL)

Procedura: Eliminazione di colonne da una tabella (Visual Database Tools)

Per ottenere informazioni sulle colonne Identity

sys.identity_columns (Transact-SQL)

Vedere anche

Concetti

Colonne identificatore e a numerazione automatica
Utilizzo del tipo di dati uniqueidentifier

Altre risorse

COLUMNPROPERTY (Transact-SQL)
NEWID (Transact-SQL)
OBJECTPROPERTY (Transact-SQL)
uniqueidentifier (Transact-SQL)
Replica di colonne Identity

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

14 aprile 2006

Contenuto modificato:
  • Rimozione del contenuto relativo all'utilizzo di vincoli UNIQUE con colonne ROWGUID.
  • Chiarimento dello scopo dell'utilizzo della proprietà ROWGUIDCOL.
Nuovo contenuto
  • Aggiunta di riferimenti relativi all'utilizzo di NEWSEQUENTIALID insieme a NEWID al momento della creazione di una colonna GUID.
  • Aggiunta di un esempio relativo alla creazione di una tabella con una colonna GUID.

5 dicembre 2005

Nuovo contenuto:
  • Inserimento delle informazioni sull'aggiunta delle colonne identificatore alle tabelle esistenti e sull'impossibilità di aggiungere la proprietà IDENTITY a una colonna esistente.