CREATE DEFAULT (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure

Crea un oggetto denominato valore predefinito. Quando è associato a una colonna o a un tipo di dati alias, un valore predefinito specifica un valore da inserire nella colonna a cui è associato l'oggetto (o in tutte le colonne, nel caso di un tipo di dati alias) se durante un inserimento non viene specificato in modo esplicito alcun valore.

Importante

Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Al loro posto utilizzare definizioni predefinite, che è possibile creare utilizzando la parola chiave DEFAULT di ALTER TABLE o CREATE TABLE.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

  
CREATE DEFAULT [ schema_name . ] default_name   
AS constant_expression [ ; ]  

Argomenti

schema_name
Nome dello schema a cui appartiene il valore predefinito.

default_name
Nome del valore predefinito. I nomi dei valori predefiniti devono essere conformi alle regole per gli identificatori. Il nome del proprietario del valore predefinito è facoltativo.

constant_expression
Espressione che include solo valori costanti. Non può includere i nomi di colonne o di altri oggetti di database. È possibile usare qualsiasi costante, funzione predefinita o espressione matematica, ad eccezione di quelle contenenti tipi di dati alias. Non è possibile usare funzioni definite dall'utente. Racchiudere le costanti per valori di carattere e data tra virgolette singole ('). Le costanti per valori di valuta, interi e a virgola mobile non richiedono le virgolette. I dati binari devono essere preceduti da 0x, mentre i dati di valuta devono essere preceduti dal simbolo di valuta. Il valore predefinito deve essere compatibile con il tipo di dati della colonna.

Osservazioni:

È possibile creare un nome predefinito solo nel database corrente. I nomi di valore predefinito in un database devono essere univoci per ogni schema. Quando si crea un valore predefinito, usare sp_bindefault per associarlo a una colonna o a un tipo di dati alias.

Se il valore predefinito non è compatibile con la colonna a cui è associato, SQL Server genera un messaggio di errore quando viene eseguito un tentativo di inserire il valore predefinito. Non è possibile, ad esempio, usare N/D come valore predefinito per una colonna numerica.

Se la lunghezza del valore predefinito è eccessiva per la colonna a cui è associato, il valore viene troncato.

Le istruzioni CREATE DEFAULT non possono essere combinate con altre istruzioni Transact-SQL in un singolo batch.

Un valore predefinito deve essere eliminato prima di poterne creare uno nuovo con lo stesso nome. È inoltre necessario annullare l'associazione del valore predefinito eseguendo sp_unbindefault prima della sua eliminazione.

Se a una colonna sono associati un valore predefinito e una regola, il valore predefinito non deve violare la regola. Un valore predefinito in conflitto con una regola non viene mai inserito e SQL Server genera un messaggio di errore ogni volta che viene eseguito un tentativo di inserire il valore predefinito.

Quando è associato a una colonna, un valore predefinito viene inserito nei casi seguenti:

  • Non è già stato inserito un valore in modo esplicito.

  • Con l'istruzione INSERT è stata specificata la parola chiave DEFAULT VALUES o DEFAULT per l'inserimento di valori predefiniti.

Se si specifica NOT NULL quando si crea una colonna e non si crea alcun valore predefinito, viene generato un messaggio di errore quando un utente non immette una voce nella colonna. Nella tabella seguente vengono descritte le relazioni tra l'esistenza di un valore predefinito e la definizione di una colonna come NULL o NOT NULL. Le voci nella tabella indicano i risultati ottenuti.

Definizione di colonna Nessuna voce, nessun valore predefinito Nessuna voce, valore predefinito Voce NULL, nessun valore predefinito Voce NULL, valore predefinito
NULL NULL impostazione predefinita NULL NULL
NOT NULL Error impostazione predefinita Errore Errore

Per rinominare un valore predefinito, usare sp_rename. Per ottenere un report relativo a un valore predefinito, usare sp_help.

Autorizzazioni

Per usare CREATE DEFAULT, un utente deve avere almeno l'autorizzazione CREATE DEFAULT nel database corrente e l'autorizzazione ALTER per lo schema in cui viene creato il valore predefinito.

Esempi

R. Creazione di un semplice valore predefinito costituito da una stringa di caratteri

Nell'esempio seguente viene creato un valore predefinito costituito dalla stringa di caratteri unknown.

USE AdventureWorks2022;  
GO  
CREATE DEFAULT phonedflt AS 'unknown';  

B. Associazione di un valore predefinito

Nell'esempio seguente viene associato il valore predefinito creato nell'esempio A. Il valore predefinito viene utilizzato solo se non vengono specificate voci per la colonna Phone della tabella Contact.

Nota

Omettere una voce è diverso da specificare esplicitamente NULL in un'istruzione INSERT.

Poiché non esiste un valore predefinito denominato phonedflt, l'istruzione Transact-SQL seguente ha esito negativo. Questo esempio viene utilizzato solo a scopo illustrativo.

USE AdventureWorks2022;  
GO  
sp_bindefault 'phonedflt', 'Person.PersonPhone.PhoneNumber';  

Vedi anche

ALTER TABLE (Transact-SQL)
CREATE RULE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DROP DEFAULT (Transact-SQL)
DROP RULE (Transact-SQL)
Espressioni (Transact-SQL)
INSERT (Transact-SQL)
sp_bindefault (Transact-SQL)
sp_help (Transact-SQL)
sp_helptext (Transact-SQL)
sp_rename (Transact-SQL)
sp_unbindefault (Transact-SQL)