Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di
AzureIstanza gestita di SQL di
AzureWarehouse in Microsoft Fabric
Database SQL in Anteprima di Microsoft Fabric
Specifica le proprietà di una colonna che vengono aggiunte a una tabella tramite ALTER TABLE.
Convenzioni relative alla sintassi Transact-SQL
Syntax
column_name <data_type>
[ FILESTREAM ]
[ COLLATE collation_name ]
[ NULL | NOT NULL ]
[
[ CONSTRAINT constraint_name ] DEFAULT constant_expression [ WITH VALUES ]
| IDENTITY [ ( seed , increment ) ] [ NOT FOR REPLICATION ]
]
[ ROWGUIDCOL ]
[ SPARSE ]
[ ENCRYPTED WITH
( COLUMN_ENCRYPTION_KEY = key_name ,
ENCRYPTION_TYPE = { DETERMINISTIC | RANDOMIZED } ,
ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256'
) ]
[ MASKED WITH ( FUNCTION = ' mask_function ') ]
[ <column_constraint> [ ...n ] ]
<data type> ::=
[ type_schema_name . ] type_name
[ ( precision [ , scale ] | max |
[ { CONTENT | DOCUMENT } ] xml_schema_collection ) ]
<column_constraint> ::=
[ CONSTRAINT constraint_name ]
{ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
[
WITH FILLFACTOR = fillfactor
| WITH ( < index_option > [ , ...n ] )
]
[ ON { partition_scheme_name ( partition_column_name )
| filegroup | "default" } ]
| [ FOREIGN KEY ]
REFERENCES [ schema_name . ] referenced_table_name [ ( ref_column ) ]
[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
[ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
[ NOT FOR REPLICATION ]
| CHECK [ NOT FOR REPLICATION ] ( logical_expression )
}
Arguments
column_name
Nome della colonna da modificare, aggiungere o eliminare. column_name può essere costituito da un numero di caratteri compreso tra 1 e 128. Per le nuove colonne, creato con un tipo di dati timestamp , è possibile omettere column_name . Se non viene specificato il nome column_name per una colonna con il tipo di dati timestamp, viene usato il nome timestamp.
[ type_schema_name. ] type_name
Tipo di dati per la colonna aggiunta e lo schema a cui appartiene.
TYPE_NAME può essere:
Tipo di dati di sistema di Microsoft SQL Server.
Tipo di dati alias basato su un tipo di dati di sistema di SQL Server. I tipi di dati alias devono essere creati usando
CREATE TYPE
prima di poter essere usati in una definizione di tabella.Tipo definito dall'utente (UDT) di Microsoft .NET Framework e schema a cui appartiene. Per poter essere usato in una definizione di tabella, è necessario creare
CREATE TYPE
un tipo definito dall'utente di .NET Framework.
Se non si specifica type_schema_name, il motore di database di SQL Server fa riferimento a type_name nell'ordine seguente:
Tipo di dati di sistema di SQL Server.
Schema predefinito dell'utente corrente nel database corrente.
Schema dbo nel database corrente.
precision
Precisione del tipo di dati specificato. Per altre informazioni sui valori di precisione validi, vedere Precisione, scala e lunghezza.
scale
Scala per il tipo di dati specificato. Per altre informazioni sui valori di scala validi, vedere Precisione, scala e lunghezza.
max
Si applica solo al tipo di dati varchar, nvarchar e varbinary. Questi (max)
tipi di dati vengono usati per archiviare 2^31 byte di dati di tipo carattere e binari e 2^30 byte di dati Unicode.
CONTENT
Specifica che ogni istanza del tipo di dati xml in column_name può contenere più elementi principali.
CONTENT
si applica solo al tipo di dati xml e può essere specificato solo se viene specificato xml_schema_collection . Se non viene specificato, CONTENT
è il comportamento predefinito.
DOCUMENT
Specifica che ogni istanza del tipo di dati xml in column_name può contenere più elementi principali.
DOCUMENT
si applica solo al tipo di dati xml e può essere specificato solo se viene specificato xml_schema_collection .
xml_schema_collection
Si applica a: SQL Server 2008 (10.0.x) e versioni successive.
Si applica solo al tipo di dati xml per associare una raccolta di XML Schema al tipo. Prima dell'aggiunta di una colonna di tipo di dati xml a uno schema, è necessario creare lo schema nel database usando CREATE XML SCHEMA COLLECTION.
FILESTREAM
Facoltativamente specifica l'attributo di archiviazione FILESTREAM per la colonna con type_name di varbinary(max).
Quando viene specificato FILESTREAM per una colonna, la tabella deve avere anche una colonna per il tipo di dati uniqueidentifier con l'attributo ROWGUIDCOL. Questa colonna non deve consentire valori Null e deve avere un vincolo a colonna singola UNIQUE o PRIMARY KEY. Il GUID
valore per la colonna viene fornito dall'applicazione quando i dati vengono inseriti o da un vincolo DEFAULT.
Non è possibile eliminare la colonna ROWGUIDCOL, né modificare i vincoli correlati quando per la tabella è stata definita una colonna FILESTREAM. La colonna ROWGUIDCOL può essere eliminata solo dopo l'eliminazione dell'ultima colonna FILESTREAM.
Quando l'attributo di archiviazione FILESTREAM viene specificato per una colonna, tutti i valori per quella colonna vengono archiviati in un contenitore di dati FILESTREAM nel file system.
Per un esempio che illustra come usare la definizione di colonna, vedere FILESTREAM.
COLLATE collation_name
Specifica le regole di confronto per la colonna. Se viene omesso, alla colonna vengono assegnate le regole di confronto predefinite del database. È possibile usare nomi di regole di confronto di Windows o SQL. Per un elenco e altre informazioni, vedere Nome delle regole di confronto di Windows e Nome delle regole di confronto di SQL Server.
La COLLATE
clausola può essere usata per specificare le regole di confronto solo delle colonne dei tipi di dati char, varchar, nchar e nvarchar .
Per altre informazioni sulla COLLATE
clausola , vedere COLLATE.
NULL | NOT NULL
Determina se NULL
i valori sono consentiti nella colonna.
NULL
non è strettamente un vincolo, ma può essere specificato esattamente come NOT NULL
.
[ CONSTRAINT constraint_name ]
Specifica l'inizio di una DEFAULT
definizione di valore. Per mantenere la compatibilità con le versioni precedenti di SQL Server, è possibile assegnare un nome di vincolo a un oggetto DEFAULT
.
constraint_name deve seguire le regole per gli identificatori, ad eccezione del fatto che il nome non può iniziare con un segno di numero (#
). Se constraint_name non viene specificato, alla definizione viene assegnato DEFAULT
un nome generato dal sistema.
DEFAULT
Parola chiave che specifica il valore predefinito della colonna.
DEFAULT
le definizioni possono essere usate per fornire valori per una nuova colonna nelle righe di dati esistenti.
DEFAULT
le definizioni non possono essere applicate alle colonne timestamp o alle colonne con una IDENTITY
proprietà . Se si specifica un valore predefinito per una colonna di tipo definito dall'utente, il tipo deve supportare la conversione implicita da constant_expression nel tipo definito dall'utente.
constant_expression
Valore letterale, un NULL
oggetto o una funzione di sistema usata come valore di colonna predefinito. Se usato con una colonna definita per essere di un tipo definito dall'utente di .NET Framework, l'implementazione del tipo deve supportare una conversione implicita dal constant_expression al tipo definito dall'utente.
WITH VALUES
Quando si aggiunge una colonna e un DEFAULT
vincolo, se la colonna consente NULLS, WITH VALUES
imposta il valore della nuova colonna sul valore specificato in DEFAULT constant_expression
per le righe esistenti.
Se la colonna da aggiungere non consente VALORI NULL, per le righe esistenti, il valore della colonna verrà sempre impostato sul valore specificato in DEFAULT constant expression
.
A partire da SQL Server 2012 (11.x), può trattarsi di un'operazione di metadati che aggiunge-not-null-columns-as-an-online-operation.
Se viene usata quando non viene aggiunta anche la colonna correlata, non ha alcun effetto.
Specifica che il valore specificato in DEFAULT constant_expression
viene archiviato in una nuova colonna aggiunta alle righe esistenti. Se la colonna aggiunta ammette valori Null e viene specificata la clausola WITH VALUES, il valore predefinito viene archiviato nella nuova colonna aggiunta alle righe esistenti. Se WITH VALUES
non viene specificato per le colonne che consentono valori Null, il valore NULL viene archiviato nella nuova colonna, nelle righe esistenti. Se la nuova colonna non ammette valori Null, il valore predefinito viene archiviato nelle nuove righe, indipendentemente dal fatto che la clausola WITH VALUES sia o meno specificata.
IDENTITY
Specifica che la nuova colonna è una colonna Identity. Il motore di database di SQL Server fornisce un valore incrementale univoco per la colonna. Quando si aggiungono colonne identificatore alle tabelle esistenti, alle righe esistenti della tabella vengono aggiunti i valori Identity con i valori di inizializzazione e di incremento. L'ordine con cui le righe vengono aggiornate non è prevedibile. Vengono inoltre generati valori Identity per qualsiasi nuova riga aggiunta.
Le colonne Identity vengono comunemente usate con PRIMARY KEY
vincoli per fungere da identificatore di riga univoco per la tabella. La IDENTITY
proprietà può essere assegnata a una colonna tinyint, smallint, int, bigint, decimal(p,0)o numeric(p,0). Ogni tabella può includere una sola colonna Identity. Non è possibile usare la DEFAULT
parola chiave e le impostazioni predefinite associate con una colonna Identity. È necessario specificare sia il valore di inizializzazione che l'incremento oppure nessuno dei due valori. Se nessuno dei due elementi è specificato, il valore predefinito è (1,1)
.
Note
Non è possibile modificare una colonna di tabella esistente per aggiungere la IDENTITY
proprietà .
Non è possibile aggiungere una colonna Identity a una tabella pubblicata perché questo può impedire la convergenza quando le colonne vengono replicate nel Sottoscrittore. I valori della colonna Identity nel server di pubblicazione dipendono dall'ordine in cui vengono fisicamente archiviate le righe della tabella interessata. Le righe potrebbero essere archiviate in modo diverso nel Sottoscrittore; pertanto, il valore per la colonna Identity può essere diverso per le stesse righe.
Per disabilitare la IDENTITY
proprietà di una colonna consentendo l'inserimento esplicito dei valori, utilizzare SET IDENTITY_INSERT.
seme Valore utilizzato per la prima riga caricata nella tabella.
Aumento Valore incrementale aggiunto al valore Identity della riga precedente caricata.
NOT FOR REPLICATION
Si applica a: SQL Server 2008 (10.0.x) e versioni successive.
Può essere specificato per la IDENTITY
proprietà . Se questa clausola viene specificata per la IDENTITY
proprietà , i valori non vengono incrementati nelle colonne Identity quando gli agenti di replica eseguono operazioni di inserimento.
ROWGUIDCOL
Si applica a: SQL Server 2008 (10.0.x) e versioni successive.
Specifica che la colonna è una colonna GUID di riga.
ROWGUIDCOL
può essere assegnato solo a una colonna uniqueidentifier e una sola colonna uniqueidentifier per tabella può essere designata come ROWGUIDCOL
colonna.
ROWGUIDCOL
non può essere assegnato alle colonne di tipi di dati definiti dall'utente.
ROWGUIDCOL
non impone l'univocità dei valori archiviati nella colonna. Inoltre, ROWGUIDCOL
non genera automaticamente valori per le nuove righe inserite nella tabella. Per generare valori univoci per ogni colonna, usare la NEWID()
funzione nelle INSERT
istruzioni o specificare la NEWID()
funzione come predefinita per la colonna. Per altre informazioni, vedere NEWID (Transact-SQL) e INSERT (Transact-SQL).
SPARSE
Indica che la colonna è di tipo sparse. L'archiviazione delle colonne di tipo sparse è ottimizzata per valori Null. Non è possibile designare le colonne di tipo sparse come NOT NULL. Per altre restrizioni e informazioni relative alle colonne di tipo sparse, vedere Usare le colonne di tipo sparse.
<column_constraint>
Per le definizioni degli argomenti di vincolo di colonna, vedere column_constraint (Transact-SQL).
ENCRYPTED WITH
Specifica la crittografia di colonne usando la funzionalità Always Encrypted.
ENCRYPTED WITH
non è supportato nel database SQL in Anteprima di Microsoft Fabric.
COLUMN_ENCRYPTION_KEY = key_name
Specifica la chiave di crittografia della colonna. Per altre informazioni, vedere CREATE COLUMN ENCRYPTION KEY (Transact-SQL).
ENCRYPTION_TYPE = { DETERMINISTIC | RANDOMIZED }
La crittografia deterministica usa un metodo che genera sempre lo stesso valore crittografato per qualsiasi valore di testo normale specificato. L'uso della crittografia deterministica consente di eseguire operazioni di ricerca usando il confronto di uguaglianza, il raggruppamento e il join di tabelle con join di uguaglianza basati su valori crittografati, ma può anche consentire a utenti non autorizzati di ipotizzare informazioni sui valori crittografati esaminando i criteri nella colonna crittografata. È possibile creare un join di due tabelle nelle colonne crittografate in modo deterministico solo se entrambe le colonne vengono crittografate usando la stessa chiave di crittografia della colonna. La crittografia deterministica deve usare regole di confronto a livello di colonna con un ordinamento binario2 per colonne di tipo carattere.
La crittografia casuale usa un metodo di crittografia dei dati meno prevedibile. La crittografia casuale è più sicura, ma impedisce i calcoli e l'indicizzazione delle colonne crittografate, a meno che l'istanza di SQL Server non supporti Always Encrypted con enclave sicuri.
Se si usa Always Encrypted (senza enclave sicuri), usare la crittografia deterministica per le colonne in cui eseguire la ricerca con parametri o parametri di raggruppamento, ad esempio un numero ID per gli enti pubblici. Utilizzare la crittografia casuale, per dati come un numero di carta di credito che non è raggruppato con altri record o usati per unire tabelle e che non viene cercato perché si utilizzano altre colonne (ad esempio un numero di transazione) per trovare la riga contenente la colonna crittografata di interesse.
Se si usa Always Encrypted con enclave sicuri, la crittografia casuale è il tipo di crittografia consigliato.
Le colonne devono essere di un tipo di dati idoneo.
ALGORITHM
Si applica a: SQL Server 2016 (13.x) e versioni successive, Database SQL.
Deve essere 'AEAD_AES_256_CBC_HMAC_SHA_256'.
Per altre informazioni, inclusi i vincoli di funzionalità, vedere Always Encrypted (motore di database).
ADD MASKED WITH (FUNCTION = ' mask_function ')
Si applica a: SQL Server 2016 (13.x) e versioni successive, Database SQL.
Specifica una maschera dati dinamica. mask_function è il nome della funzione di maschera con i parametri appropriati. Sono disponibili le funzioni seguenti:
default()
email()
partial()
random()
Per i parametri di funzione, vedere Mascheramento dati dinamici.
Remarks
Se una colonna viene aggiunta con un tipo di dati uniqueidentifier , può essere definita con un valore predefinito che usa la NEWID()
funzione per fornire i valori di identificatore univoco nella nuova colonna per ogni riga esistente nella tabella. Per altre informazioni, vedere NEWID (Transact-SQL).
Il motore di database non applica un ordine per specificare DEFAULT
vincoli di colonna , IDENTITY
ROWGUIDCOL
, o in una definizione di colonna.
L'istruzione ALTER TABLE
ha esito negativo se l'aggiunta della colonna fa sì che le dimensioni della riga di dati superino 8.060 byte.
Examples
Per gli esempi, vedere ALTER TABLE (Transact-SQL).