CREATE DEFAULT (Transact-SQL)

Crea un oggetto denominato valore predefinito. Quando è associato a una colonna o a un tipo di dati alias, un valore predefinito specifica il valore che verrà inserito 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.

ms173565.note(it-it,SQL.90).gifImportante:
L'istruzione CREATE DEFAULT verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare l'utilizzo di CREATE DEFAULT in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. In alternativa, utilizzare definizioni di valori predefiniti create con la parola chiave DEFAULT dell'istruzione ALTER TABLE o CREATE TABLE. Per ulteriori informazioni, vedere Creazione e modifica delle definizioni DEFAULT.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL


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

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 del database). È possibile utilizzare qualsiasi costante, funzione predefinita o espressione matematica, ad eccezione di quelle contenenti tipi di dati alias. Non è consentito l'utilizzo di funzioni definite dall'utente. Racchiudere le costanti per valori di carattere e data tra virgolette singole ('). Le costanti per valori di valuta, integer 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.

È possibile creare un nome di valore 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, è possibile associarlo a una colonna o a un tipo di dati alias tramite la procedura sp_bindefault.

Se un valore predefinito non è compatibile con la colonna a cui è associato, SQL Server genera un messaggio di errore in corrispondenza dei tentativi di inserimento del valore predefinito. Non è possibile, ad esempio, utilizzare N/D come valore predefinito per una colonna numeric.

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

Le istruzioni CREATE PROCEDURE non possono essere utilizzate in combinazione con altre istruzioni Transact-SQL in un singolo batch.

È necessario eliminare un valore predefinito prima di crearne un altro con lo stesso nome. Inoltre, prima di eliminare il valore predefinito, è necessario disassociarlo tramite la procedura sp_unbindefault.

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 in corrispondenza di ogni tentativo di immissione del 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 in fase di creazione di una colonna viene specificata la parola chiave NOT NULL e non viene creato alcun valore predefinito, quando un utente non immette una voce nella colonna viene generato un messaggio di errore. 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 immissione, nessun valore predefinito Nessuna immissione, valore predefinito Immissione di NULL, nessun valore predefinito Immissione di NULL, valore predefinito

NULL

NULL

Valore predefinito

NULL

NULL

NOT NULL

Errore

Valore predefinito

Errore

Errore

ms173565.note(it-it,SQL.90).gifNota:
In SQL Server una stringa vuota viene interpretata come singolo spazio o come effettiva stringa vuota in base all'impostazione di sp_dbcmptlevel. Se il livello di compatibilità è minore o uguale a 65, le stringhe vuote vengono interpretate da SQL Server come singoli spazi. Se il livello di compatibilità è uguale a 70, le stringhe vuote vengono interpretate da SQL Server come stringhe vuote. Per ulteriori informazioni, vedere sp_dbcmptlevel (Transact-SQL).

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

Per eseguire CREATE DEFAULT, un utente deve disporre come minimo dell'autorizzazione CREATE DEFAULT nel database corrente e dell'autorizzazione ALTER per lo schema in cui viene creato il valore predefinito.

A. 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 AdventureWorks;
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. Si noti che omettere una voce è diverso da specificare esplicitamente NULL in un'istruzione INSERT.

Dato che il valore predefinito phonedflt non esiste, l'istruzione Transact-SQL seguente ha esito negativo. Questo esempio viene utilizzato solo a scopo illustrativo.

USE AdventureWorks;
GO
sp_bindefault 'phonedflt', 'Person.Contact.Phone';

Aggiunte alla community

AGGIUNGI
Mostra: