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 : |
---|
CREATE DEFAULT sera retirée dans une future version de Microsoft SQL Server. Évitez d'utiliser CREATE DEFAULT dans un nouveau travail de développement et prévoyez la modification des applications qui l'utilisent actuellement. 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. |
Conventions de la syntaxe de 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 lot 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 |
Remarque : |
---|
La façon dont SQL Server interprète une chaîne vide, comme un espace unique ou comme une vraie chaîne vide, est déterminée par la valeur de sp_dbcmptlevel. Si le niveau de compatibilité est inférieur ou égal à 65, SQL Server interprète les chaînes vides comme des espaces simples. Si le niveau de compatibilité est égal à 70, SQL Server interprète les chaînes vides comme telles. Pour plus d'informations, consultez sp_dbcmptlevel (Transact-SQL). |
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 AdventureWorks;
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 AdventureWorks;
GO
sp_bindefault 'phonedflt', 'Person.Contact.Phone';
Voir aussi
Référence
ALTER TABLE (Transact-SQL)
CREATE VIEW (Transact-SQL)
CREATE TABLE (Transact-SQL)
DROP DEFAULT (Transact-SQL)
DROP RULE (Transact-SQL)
Expressions (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)
Autres ressources
Lots d'instructions
Utilisation des identificateurs comme noms d'objet