Bonjour
Est-il possible avec SQL Serveur 2008 de definir une clef unique sur un champ nullable, l'index ne portant donc bien sur que sur les champ non null ?
Version imprimable
Bonjour
Est-il possible avec SQL Serveur 2008 de definir une clef unique sur un champ nullable, l'index ne portant donc bien sur que sur les champ non null ?
La réponse est Oui
Depuis SQL Server 2008, il est possible de définir des indexs filtrés.
Une des utilisations des indexes filrés est de créer un index unique sur une colonne nullable.
Exemple :
Code:
1
2
3 CREATE UNIQUE NONCLUSTERED INDEX Idx_Client_RefExt ON dbo.Client (RefExt) WHERE RefExt IS NOT NULL;
Merci hmira
C'est tout a fait ce que je cherchais.
Sais tu si SSMS permet de le definir en mode GUI ?
Oui, il est également possible de créer, sous SSMS, en mode GUI, un index filtré. Pour cela, procédez comme suit:
Dans l'Explorateur d'objetsEt c'est tout ! l'index filtré est ainsi créé.
. Développez la table sur laquelle vous souhaitez créer un index.
Exemple : table dbo.Client
. Cliquez avec le bouton droit sur le dossier Index, puis sélectionnez «Nouvel index»
Dans la page «Général», de la boîte de dialogue «Nouvel index» :
. Saisissez le nom de l'index
Exemple Idx_Client_RefExt
. Sélectionnez «Type Index» «Non cluster»
. Cochez la case «Unique»
. Ajoutez les colonnes de clé d'index
Exemple : Ajout de la colonne RefExt
Dans la page «Filtre» de la boîte de dialogue «Nouvel index» :
. Saisissez l'expression du filtre
Exemple : RefExt IS NOT NULL
Dans la boîte de dialogue «Nouvel index», cliquez sur «OK».
A+