Spécifier des valeurs par défaut pour les colonnes
S’applique à : SQL Server 2016 (13.x) et versions ultérieures Base de données Azure SQLAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)
Vous pouvez utiliser SQL Server Management Studio (SSMS) pour spécifier une valeur par défaut qui sera entrée dans la colonne de table. Vous pouvez définir une valeur par défaut en utilisant l’Explorateur d’objets ou en exécutant Transact-SQL.
Si vous n’assignez aucune valeur par défaut à la colonne et que l’utilisateur laisse la colonne vide, alors :
Si vous définissez l’option pour autoriser les valeurs Nul,
NULL
est inséré dans la colonne.Si vous ne définissez pas l’option pour autoriser les valeurs Null, la colonne reste vide, mais l’utilisateur ou l’application ne peut pas insérer la ligne tant qu’elle n’a pas fourni de valeur pour la colonne.
Vous pouvez utiliser une contrainte par défaut pour différentes tâches pour garantir la cohérence des données au niveau de la base de données :
- Définissez la valeur de ligne d’une colonne « active » ou « enable » sur
1
lors de l’insertion. - Définissez la valeur de ligne d’un champ de date sur la date actuelle.
- Définissez la valeur de ligne d’un champ sur une fonction système déterministe, par exemple,
DB_NAME()
.
Limites
Avant toute chose, tenez compte des limitations et restrictions suivantes :
Si votre entrée dans le champ Valeur par défaut remplace une valeur par défaut liée (qui est affichée sans parenthèses), vous êtes invité à annuler la liaison de la valeur par défaut et à la remplacer par la nouvelle valeur par défaut.
Pour entrer une chaîne de caractères, placez la valeur entre guillemets simples (
'
). N’utilisez pas de guillemets doubles ("
), car ils sont réservés aux identificateurs entre guillemets.Pour entrer une valeur numérique par défaut, entrez le nombre sans guillemets autour.
Pour entrer un objet/une fonction, entrez le nom de l'objet/fonction sans guillemets autour.
Dans Azure Synapse Analytics, seules les constantes peuvent être utilisées pour une contrainte par défaut. Une expression ne peut pas être utilisée avec une contrainte par défaut.
autorisations
Les actions décrites dans cet article nécessitent l’autorisation ALTER
sur la table.
Utiliser SQL Server Management Studio pour spécifier une valeur par défaut
Vous pouvez utiliser l’Explorateur d’objets dans SSMS pour spécifier une valeur par défaut pour une colonne de table. Pour ce faire, procédez comme suit :
Connectez-vous à votre instance SQL Server à l’aide de SSMS.
Dans l’Explorateur d’objets, cliquez avec le bouton droit sur la table contenant les colonnes dont vous souhaitez modifier l’échelle et sélectionnez Conception.
Sélectionnez la colonne pour laquelle vous souhaitez spécifier une valeur par défaut.
Sous l'onglet Propriétés des colonnes , entrez la nouvelle valeur par défaut dans la propriété Valeur ou liaison par défaut .
Pour entrer une valeur par défaut numérique, entrez le nombre. Pour un objet ou une fonction, entrez son nom. Pour une valeur par défaut alphanumérique, entrez la valeur dans des guillemets simples.
Dans le menu Fichier, sélectionnez Enregistrer <nom_table>.
Utiliser Transact-SQL pour spécifier une valeur par défaut
Plusieurs possibilités s’offrent à vous pour spécifier une valeur par défaut pour une colonne en utilisant T-SQL. Dans chacun des exemples suivants, vous pouvez ouvrir une nouvelle requête Transact-SQL avec ces étapes.
Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.
Dans la barre d’outils standard, sélectionnez Nouvelle requête.
Copiez et collez l’exemple dans la fenêtre de requête, puis sélectionnez Exécuter.
Utiliser une contrainte nommée
Lorsque vous utilisez des projets de base de données, il est recommandé de créer des contraintes avec des noms. Sinon, la contrainte par défaut reçoit un nom généré par le système, qui diffère sur chaque environnement SQL Server où vos objets de base de données sont créés.
CREATE TABLE dbo.doc_exz (
column_a INT,
column_b INT CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50
);
Utiliser ALTER TABLE
Vous pouvez ajouter une contrainte nommée à une table existante avec ALTER TABLE
.
CREATE TABLE dbo.doc_exz (
column_a INT,
column_b INT
); -- Allows nulls.
GO
INSERT INTO dbo.doc_exz (column_a)
VALUES (7);
GO
ALTER TABLE dbo.doc_exz
ADD CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50 FOR column_b;
GO
Utiliser CREATE TABLE
Vous pouvez créer une table avec des contraintes par défaut avec CREATE TABLE
.
CREATE TABLE dbo.doc_exz (
column_a INT,
column_b INT CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50
);
Définir une date de création
L’exemple suivant utilise la fonction système sysdatetimeoffset()
pour remplir la valeur de ligne de la colonne dateinserted
avec la date de création de la ligne.
CREATE TABLE dbo.test (
id INT identity(1, 1) NOT NULL CONSTRAINT PK_test PRIMARY KEY
,date_inserted DATETIMEOFFSET(2) NOT NULL CONSTRAINT DF_test_date_inserted DEFAULT(sysdatetimeoffset())
);
Une contrainte par défaut ne change pas lorsque la ligne est mise à jour. Pour mettre à jour une valeur chaque fois que la ligne est modifiée, envisagez d’utiliser un déclencheur , une table temporelle , une colonne calculée ou une chaîne binaire rowversion. Envisagez également d’insérer des lignes en exécutant des procédures stockées au lieu d’insérer directement des lignes, où les procédures stockées peuvent appliquer la logique métier, les valeurs par défaut et d’autres règles de cohérence des données.
Pour détecter les lignes qui changent, envisagez capture de données modifiées (CDC), suivi des modifications, une table temporelle ou une table de journal .