Partage via


sp_unbindrule (Transact-SQL)

S'applique à : SQL Server

Dissocie une règle d'une colonne ou d'un type de données alias dans la base de données active.

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 du mot clé DEFAULT dans les instructions ALTER TABLE ou CREATE TABLE à la place.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_unbindrule
    [ @objname = ] N'objname'
    [ , [ @futureonly = ] 'futureonly' ]
[ ; ]

Arguments

[ @objname = ] N’objname'

Nom de la table et de la colonne ou du type de données alias à partir duquel la règle n’est pas lié. @objname est nvarchar(776), sans valeur par défaut. SQL Server tente de résoudre d’abord les identificateurs en deux parties en noms de colonnes, puis en types de données alias. Lorsque vous dissociez une règle d'un type de données alias, les colonnes de ce type de données ayant la même règle sont également dissociées. Les colonnes de ce type de données auxquelles des règles sont directement liées ne sont pas affectées.

Remarque

@objname peut contenir des crochets [] sous forme de caractères d’identificateur délimités. Pour plus d’informations, consultez Identificateurs de base de données.

[ @futureonly = ] 'futureonly'

Utilisé uniquement lors de la dissociation d’une règle à partir d’un type de données alias. @futureonly est varchar(15), avec la valeur par défaut NULL. Lorsque @futureonly est futureonly, les colonnes existantes de ce type de données ne perdent pas la règle spécifiée.

Valeurs des codes de retour

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

Notes

Pour afficher le texte d’une règle, exécutez sp_helptext avec le nom de la règle comme paramètre.

Lorsqu’une règle n’est pas liée, les informations relatives à la liaison sont supprimées de la sys.columns table si la règle était liée à une colonne et de la sys.types table si la règle était liée à un type de données alias.

Lorsqu’une règle n’est pas lié à partir d’un type de données alias, elle est également indépendante de toutes les colonnes ayant ce type de données d’alias. La règle peut également être liée à des colonnes dont les types de données ont été modifiés ultérieurement par la clause ALTER COLUMN d’une instruction ALTER TABLE, vous devez spécifiquement dissocier la règle de ces colonnes en utilisant sp_unbindrule et en spécifiant le nom de colonne.

autorisations

La dissociation d'une règle d'une colonne de table nécessite l'autorisation ALTER sur la table. La dissociation d'une règle d'un type de données alias nécessite l'autorisation CONTROL sur le type ou l'autorisation ALTER sur le schéma auquel le type appartient.

Exemples

R. Dissocier une règle d’une colonne

L'exemple suivant dissocie la règle de la colonne startdate de la table employees.

EXEC sp_unbindrule 'employees.startdate';

B. Dissocier une règle à partir d’un type de données d’alias

L'exemple suivant dissocie la règle du type de données alias ssn. Il dissocie la règle des colonnes existantes et à venir de ce type.

EXEC sp_unbindrule ssn;

C. Utiliser futureonly_flag

L'exemple suivant dissocie la règle du type de données alias ssn sans affecter les colonnes ssn existantes.

EXEC sp_unbindrule 'ssn', 'futureonly';

D. Utiliser des identificateurs délimités

L’exemple suivant montre l’utilisation d’identificateurs délimités dans le paramètre @objname . Notez la période dans le nom de la table. Dans la sp_bindrule partie, l’objet contient deux points ; le premier fait partie du nom de la table et le second distingue le nom de la table du nom de la colonne.

CREATE TABLE [t.4] (c1 int);
GO
CREATE RULE rule2 AS @value > 100;
GO
EXEC sp_bindrule rule2, '[t.4].c1'
GO
EXEC sp_unbindrule '[t.4].c1';