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
AzureDatabase SQL in Microsoft Fabric
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. Usare invece le definizioni predefinite create usando la DEFAULT parola chiave 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 costanti di caratteri e date tra virgolette singole ('); costanti monetarie, intere e a virgola mobile non richiedono virgolette. I dati binari devono essere preceduti da 0xe i dati monetari devono essere preceduti da un segno di dollaro ($). 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.
CREATE DEFAULT Le istruzioni 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. E il valore predefinito deve essere non associato eseguendo sp_unbindefault prima che venga eliminato.
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.
-
DEFAULT VALUESLe parole chiave oDEFAULTvengono usate conINSERTper inserire i valori predefiniti.
Se si specifica NOT NULL quando si crea una colonna e non si crea un valore predefinito, viene generato un messaggio di errore quando un utente non riesce a creare una voce in tale colonna. Nella tabella seguente viene illustrata la relazione 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 | Immettere NULL, nessun valore predefinito |
Immettere NULL, impostazione predefinita |
|---|---|---|---|---|
NULL |
NULL |
Impostazione predefinita | NULL |
NULL |
NOT NULL |
Error | Impostazione predefinita | Error | Error |
Per rinominare un valore predefinito, utilizzare sp_rename Per un report per impostazione predefinita, utilizzare sp_help.
Autorizzazioni
Per usare CREATE DEFAULTalmeno , un utente deve disporre CREATE DEFAULT dell'autorizzazione nel database corrente e ALTER dell'autorizzazione per lo schema in cui viene creato il valore predefinito.
Esempi
R. Creare un carattere di base predefinito
Nell'esempio seguente viene creato un valore predefinito costituito dalla stringa di caratteri unknown.
USE AdventureWorks2022;
GO
CREATE DEFAULT phonedflt
AS 'unknown';
B. Associare 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
L'omissione di qualsiasi voce è diversa da quella in modo esplicito in NULL 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
EXECUTE sp_bindefault 'phonedflt', 'Person.PersonPhone.PhoneNumber';
Contenuti correlati
- ALTER TABLE (Transact-SQL)
- CREA REGOLA (Transact-SQL)
- CREA TABELLA (Transact-SQL)
- DROP DI DEFAULT (Transact-SQL)
- REGOLA DEL DROP (Transact-SQL)
- Espressioni (Transact-SQL)
- INSERIMENTO (Transact-SQL)
- sp_bindefault (Transact-SQL)
- sp_help (Transact-SQL)
- sp_helptext (Transact-SQL)
- sp_rename (Transact-SQL)
- sp_unbindefault (Transact-SQL)