Partager via


CREATE DEFAULT (Transact-SQL)

Crée un objet appelé default (valeur par défaut). Lorsqu'elle est liée à une colonne ou à un type de données alias, une valeur par défaut spécifie une valeur à insérer dans la colonne à laquelle est lié l'objet (ou dans toutes les colonnes, dans le cas d'un type de données alias) lorsqu'aucune valeur n'est explicitement fournie lors d'une opération d'insertion.

Important

Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité. Utilisez plutôt des définitions par défaut créées à l'aide du mot clé DEFAULT ou de ALTER TABLE ou CREATE TABLE. Pour plus d'informations, consultez Création et modification des définitions DEFAULT.

Icône Lien de rubriqueConventions de syntaxe Transact-SQL

Syntaxe

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

Arguments

  • schema_name
    Nom du schéma auquel appartient la valeur par défaut.

  • default_name
    Nom de la valeur par défaut. Le nom des valeurs par défaut doit respecter les règles régissant les identificateurs. Vous n'êtes pas obligé de spécifier le nom du propriétaire par défaut.

  • constant_expression
    Expression qui ne contient que des valeurs constantes (ne peut comprendre des noms de colonnes ou d'autres objets de base de données). Toute constante, fonction intégrée ou expression mathématique peut être utilisée, à l'exception de celles contenant des types d'alias. Les fonctions définies par l'utilisateur ne peuvent pas être utilisées. Entourez les constantes caractère et date de guillemets simples (') ; les constantes monétaires, entières et à virgule flottante ne doivent pas être entourées de guillemets. Les données binaires doivent être précédées de 0x et les données monétaires du signe dollar ($). La valeur par défaut doit être compatible avec le type de données de la colonne.

Notes

Un nom de valeur par défaut ne peut être créé que dans la base de données active. Au sein d'une base de données, les noms de valeurs par défaut doivent être uniques pour chaque schéma. Lorsqu'une valeur par défaut est créée, utilisez sp_bindefault pour la lier à une colonne ou à un type d'alias.

En cas d'incompatibilité entre la valeur par défaut et la colonne à laquelle elle est liée, SQL Server génère un message d'erreur lors d'une tentative d'insertion de la valeur par défaut. Par exemple, vous ne pouvez pas utiliser N/A comme valeur par défaut pour une colonne de type numeric.

Si la valeur par défaut est trop longue pour la colonne à laquelle elle est liée, la valeur est tronquée.

L'instruction CREATE DEFAULT ne peut pas s'utiliser conjointement avec d'autres instructions Transact-SQL dans un même traitement d'instructions.

Une valeur par défaut doit être supprimée avant d'en créer une nouvelle portant le même nom et il faut également supprimer sa liaison en exécutant sp_unbindefault avant la suppression.

Si une colonne possède à la fois une valeur par défaut et une règle qui lui est associée, la valeur par défaut ne peut pas enfreindre la règle. Une valeur par défaut qui est en conflit avec une règle n'est jamais insérée et SQL Server génère un message d'erreur à chaque tentative d'insertion de la valeur par défaut.

Lorsqu'elle est liée à une colonne, une valeur par défaut est insérée lorsque :

  • une valeur n'est pas entrée explicitement ;

  • soit les mots clés DEFAULT VALUES ou DEFAULT sont utilisés avec INSERT pour insérer des valeurs par défaut.

Si vous précisez NOT NULL lors de la création d'une colonne et qu'aucune valeur par défaut n'est créée pour cette colonne, le système génère un message d'erreur lorsque l'utilisateur ne parvient pas à effectuer une entrée dans cette colonne. Le tableau suivant illustre les relations entre l'existence d'une valeur par défaut et la définition d'une colonne à NULL ou NOT NULL (valeurs NULL autorisées ou non). Les entrées du tableau indiquent les résultats.

Définition de la colonne

Pas d'entrée, pas de valeur par défaut

Pas d'entrée, valeur par défaut

Entrée NULL, pas de valeur par défaut

Entrée NULL, valeur par défaut

NULL

NULL

valeur par défaut

NULL

NULL

NOT NULL

Erreur

valeur par défaut

erreur

erreur

Pour renommer une valeur par défaut, utilisez sp_rename. Pour obtenir des informations sur une valeur par défaut, utilisez sp_help.

Autorisations

Pour exécuter CREATE DEFAULT, un utilisateur doit posséder, au minimum, une autorisation CREATE DEFAULT sur la base de données active et une autorisation ALTER sur le schéma dans lequel la valeur par défaut est créée.

Exemples

A. Créer une valeur par défaut simple de type caractère

L'exemple suivant crée une valeur par défaut de type caractère appelée unknown.

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

B. Lier une valeur par défaut

L'exemple suivant lie la valeur par défaut créée dans l'exemple A. Celle-ci ne prend effet que si aucune entrée n'est spécifiée pour la colonne Phone de la table Contact. Veuillez noter que cela ne revient pas du tout au même d'omettre une entrée ou de spécifier explicitement une valeur NULL dans une instruction INSERT.

Puisqu'il n'existe pas de valeur par défaut nommée phonedflt, l'instruction Transact-SQL suivante échoue. Cet exemple n'est donné qu'à titre indicatif.

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