sp_bindefault (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Lie une valeur par défaut à une colonne ou à un type de données d'alias.

Important

Cette fonctionnalité sera supprimée dans une version future de 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é. Nous vous recommandons de créer des définitions par défaut à l’aide de l’mot clé DEFAULT des instructions ALTER TABLE ou CREATE TABLE à la place.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_bindefault
    [ @defname = ] N'defname'
    , [ @objname = ] N'objname'
    [ , [ @futureonly = ] 'futureonly' ]
[ ; ]

Arguments

[ @defname = ] N’defname'

Nom de la valeur par défaut créée par CREATE DEFAULT. @defname est nvarchar(776), sans valeur par défaut.

[ @objname = ] N’objname'

Nom de la table et de la colonne, ou type de données alias auquel la valeur par défaut doit être liée. @objname est nvarchar(776), sans valeur par défaut. @objname ne peut pas être défini avec les types varchar(max), nvarchar(max), varbinary(max), xml ou CLR définis par l’utilisateur.

Si @objname est un nom en une seule partie, il se résout en tant que type de données d’alias. S’il s’agit d’un nom en deux ou trois parties, il se résout d’abord en tant que table et colonne ; et si cette résolution échoue, elle se résout en tant que type de données d’alias. Par défaut, les colonnes existantes du type de données alias héritent @defname, sauf si une valeur par défaut est liée directement à la colonne. Une valeur par défaut ne peut pas être liée à un texte, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, timestamp ou colonne de type CLR définie par l’utilisateur, une colonne avec la IDENTITY propriété, une colonne calculée ou une colonne qui a déjà une DEFAULT contrainte.

@objname peut contenir des crochets ([et]) en tant qu’identificateurs délimités. Pour plus d’informations, consultez Identificateurs de base de données.

[ @futureonly = ] 'futureonly'

Utilisé uniquement lors de la liaison d’un type de données d’alias par défaut. @futureonly est varchar(15), avec la valeur par défaut NULL. Lorsque ce paramètre est défini futureonlysur , les colonnes existantes de ce type de données ne peuvent pas hériter de la nouvelle valeur par défaut. Il ne s'emploie jamais lors de la liaison d'une valeur par défaut à une colonne. Si @futureonly est NULL, la nouvelle valeur par défaut est liée à toutes les colonnes du type de données alias qui n’ont actuellement aucune valeur par défaut ou qui utilisent la valeur par défaut existante du type de données alias.

Valeurs des codes de retour

0 (réussite) ou 1 (échec).

Notes

Vous pouvez utiliser sp_bindefault pour lier une nouvelle valeur par défaut à une colonne, bien que l’utilisation de la DEFAULT contrainte soit préférée ou à un type de données alias sans dissocier une valeur par défaut existante. L'ancienne valeur par défaut est remplacée par la nouvelle. Vous ne pouvez pas lier par défaut un type de données système SQL Server ou un type CLR défini par l’utilisateur. Si la valeur par défaut n’est pas compatible avec la colonne à laquelle vous l’avez liée, l’Moteur de base de données SQL Server retourne un message d’erreur lorsqu’il tente d’insérer la valeur par défaut, et non lorsque vous le liez.

Les colonnes existantes du type de données alias héritent de la nouvelle valeur par défaut, sauf si une valeur par défaut est liée directement à celles-ci ou que le futur est spécifié en tant que futureonly. Les nouvelles colonnes qui utilisent le type de données d'alias héritent toujours la valeur par défaut.

Lorsque vous liez une valeur par défaut à une colonne, les informations associées sont ajoutées à l’affichage sys.columns catalogue. Lorsque vous liez une valeur par défaut à un type de données alias, les informations associées sont ajoutées à la sys.types vue catalogue.

Autorisations

L’utilisateur doit posséder la table, ou être membre du rôle serveur fixe sysadmin , ou les db_owner et db_ddladmin rôles de base de données fixes.

Exemples

R. Lier une valeur par défaut à une colonne

Un nom today par défaut est défini dans la base de données active à l’aide CREATE DEFAULTde . L’exemple suivant lie la valeur par défaut à la HireDate colonne de la Employee table. Chaque fois qu’une ligne est ajoutée à la Employee table et aux données de la HireDate colonne n’est pas fournie, la colonne obtient la valeur par défaut today.

USE master;
GO

EXEC sp_bindefault 'today', 'HumanResources.Employee.HireDate';

B. Lier une valeur par défaut à un type de données d’alias

Une valeur par défaut nommée def_ssn et un type de données d'alias nommé ssn existent déjà. L'exemple suivant lie la valeur par défaut def_ssn à ssn. Lors de la création d'une table, toutes les colonnes affectées au type de données d'alias ssn héritent la valeur par défaut. Les colonnes existantes de type ssn héritent également de la valeur par défaut def_ssn, sauf si futureonly elle est spécifiée pour la valeur @futureonly , ou si la colonne a une limite par défaut directement à celle-ci. Les valeurs par défaut liées aux colonnes sont toujours prioritaires sur les valeurs par défaut liées aux types de données.

USE master;
GO

EXEC sp_bindefault 'def_ssn', 'ssn';

C. Utiliser l’option futureonly

L'exemple suivant lie la valeur par défaut def_ssn à un type de données d'alias ssn. Puisque l'option futureonly est incluse, aucune colonne existante de type ssn n'est affectée.

USE master;
GO

EXEC sp_bindefault 'def_ssn', 'ssn', 'futureonly';

D. Utiliser des identificateurs délimités

L’exemple suivant montre l’utilisation d’identificateurs délimités, [t.1]dans @objname.

USE master;
GO

CREATE TABLE [t.1] (c1 int);
-- Notice the period as part of the table name.
EXEC sp_bindefault 'default1', '[t.1].c1';
-- The object contains two periods;
-- the first is part of the table name,
-- and the second distinguishes the table name from the column name.