CREATE DEFAULT (Transact-SQL)CREATE DEFAULT (Transact-SQL)

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

Crea un oggetto denominato valore predefinito.Creates an object called a default. 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.When bound to a column or an alias data type, a default specifies a value to be inserted into the column to which the object is bound (or into all columns, in the case of an alias data type), when no value is explicitly supplied during an insert.

Importante

Questa funzionalità verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server.This feature will be removed in a future version of Microsoft SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.Avoid using this feature in new development work, and plan to modify applications that currently use this feature. In alternativa, utilizzare definizioni di valori predefiniti create con la parola chiave DEFAULT dell'istruzione ALTER TABLE o CREATE TABLE. Instead, use default definitions created using the DEFAULT keyword of ALTER TABLE or CREATE TABLE.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax


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

ArgomentiArguments

schema_nameschema_name
Nome dello schema a cui appartiene il valore predefinito.Is the name of the schema to which the default belongs.

default_namedefault_name
Nome del valore predefinito.Is the name of the default. I nomi dei valori predefiniti devono essere conformi alle regole per gli identificatori.Default names must conform to the rules for identifiers. Il nome del proprietario del valore predefinito è facoltativo.Specifying the default owner name is optional.

constant_expressionconstant_expression
Espressione che include solo valori costanti. Non può includere i nomi di colonne o di altri oggetti di database.Is an expression that contains only constant values (it cannot include the names of any columns or other database objects). È possibile utilizzare qualsiasi costante, funzione predefinita o espressione matematica, ad eccezione di quelle contenenti tipi di dati alias.Any constant, built-in function, or mathematical expression can be used, except those that contain alias data types. Non è consentito l'utilizzo di funzioni definite dall'utente.User-defined functions cannot be used.. 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.Enclose character and date constants in single quotation marks ('); monetary, integer, and floating-point constants do not require quotation marks. I dati binari devono essere preceduti da 0x, mentre i dati di valuta devono essere preceduti dal simbolo di valuta.Binary data must be preceded by 0x, and monetary data must be preceded by a dollar sign ($). Il valore predefinito deve essere compatibile con il tipo di dati della colonna.The default value must be compatible with the column data type.

RemarksRemarks

È possibile creare un nome di valore predefinito solo nel database corrente.A default name can be created only in the current database. I nomi di valore predefinito in un database devono essere univoci per ogni schema.Within a database, default names must be unique by schema. Quando si crea un valore predefinito, è possibile associarlo a una colonna o a un tipo di dati alias usando la procedura sp_bindefault.When a default is created, use sp_bindefault to bind it to a column or to an alias data type.

Se un valore predefinito non è compatibile con la colonna a cui è associato, SQL ServerSQL Server genera un messaggio di errore in corrispondenza dei tentativi di inserimento del valore predefinito.If the default is not compatible with the column to which it is bound, SQL ServerSQL Server generates an error message when trying to insert the default value. Non è possibile, ad esempio, usare N/D come valore predefinito per una colonna numeric.For example, N/A cannot be used as a default for a numeric column.

Se la lunghezza del valore predefinito è eccessiva per la colonna a cui è associato, il valore viene troncato.If the default value is too long for the column to which it is bound, the value is truncated.

Le istruzioni CREATE PROCEDURE non possono essere utilizzate in combinazione con altre istruzioni Transact-SQLTransact-SQL in un singolo batch.CREATE DEFAULT statements cannot be combined with other Transact-SQLTransact-SQL statements in a single batch.

È necessario eliminare un valore predefinito prima di crearne un altro con lo stesso nome e, prima di eliminare il valore predefinito, è necessario annullarne l'associazione eseguendo sp_unbindefault.A default must be dropped before creating a new one of the same name, and the default must be unbound by executing sp_unbindefault before it is dropped.

Se a una colonna sono associati un valore predefinito e una regola, il valore predefinito non deve violare la regola.If a column has both a default and a rule associated with it, the default value must not violate the rule. Un valore predefinito in conflitto con una regola non viene mai inserito e SQL ServerSQL Server genera un messaggio di errore in corrispondenza di ogni tentativo di immissione del valore predefinito.A default that conflicts with a rule is never inserted, and SQL ServerSQL Server generates an error message each time it attempts to insert the default.

Quando è associato a una colonna, un valore predefinito viene inserito nei casi seguenti:When bound to a column, a default value is inserted when:

  • Non è già stato inserito un valore in modo esplicito.A value is not explicitly inserted.

  • Con l'istruzione INSERT è stata specificata la parola chiave DEFAULT VALUES o DEFAULT per l'inserimento di valori predefiniti.Either the DEFAULT VALUES or DEFAULT keywords are used with INSERT to insert default values.

    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.If NOT NULL is specified when creating a column and a default is not created for it, an error message is generated when a user fails to make an entry in that column. 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.The following table illustrates the relationship between the existence of a default and the definition of a column as NULL or NOT NULL. Le voci nella tabella indicano i risultati ottenuti.The entries in the table show the result.

Definizione di colonnaColumn definition Nessuna voce, nessun valore predefinitoNo entry, no default Nessuna voce, valore predefinitoNo entry, default Voce NULL, nessun valore predefinitoEnter NULL, no default Voce NULL, valore predefinitoEnter NULL, default
NULLNULL NULLNULL predefinitidefault NULLNULL NULLNULL
NOT NULLNOT NULL ErroreError predefinitidefault erroreerror erroreerror

Per rinominare un valore predefinito, usare sp_rename.To rename a default, use sp_rename. Per ottenere un report relativo a un valore predefinito, usare sp_help.For a report on a default, use sp_help.

AutorizzazioniPermissions

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.To execute CREATE DEFAULT, at a minimum, a user must have CREATE DEFAULT permission in the current database and ALTER permission on the schema in which the default is being created.

EsempiExamples

A.A. Creazione di un semplice valore predefinito costituito da una stringa di caratteriCreating a simple character default

Nell'esempio seguente viene creato un valore predefinito costituito dalla stringa di caratteri unknown.The following example creates a character default called unknown.

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

B.B. Associazione di un valore predefinitoBinding a default

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.The following example binds the default created in example A. The default takes effect only if no entry is specified for the Phone column of the Contact table. Si noti che omettere una voce è diverso da specificare esplicitamente NULL in un'istruzione INSERT.Note that omitting any entry is different from explicitly stating NULL in an INSERT statement.

Dato che il valore predefinito phonedflt non esiste, l'istruzione Transact-SQLTransact-SQL seguente ha esito negativo.Because a default named phonedflt does not exist, the following Transact-SQLTransact-SQL statement fails. Questo esempio viene utilizzato solo a scopo illustrativo.This example is for illustration only.

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

Vedere ancheSee Also

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