Désolé, probablement noob question, mais je n'ai pas pu trouver une réponse.
CREATE TABLE SomeTable ( Id DECIMAL NOT NULL, UserIdentifier NVARCHAR(100) NULL, PRIMARY KEY (Id), ???? )
3 Réponses :
C'est assez simple. Si vous souhaitez ajouter sur une colonne unique, appliquez sur le niveau de colonne en ajoutant simplement unique code> mot-clé.
Mais si vous voulez que cela soit sur la base de plusieurs colonnes, devez ajouter contrainte code>. Pour plus d'informations, vous trouverez ce lien. Link CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL UNIQUE, --- FOR ADDING ON ONE COLUMN
FirstName varchar(255),
Age int,
CONSTRAINT UC_Person UNIQUE (ID,LastName) --- FOR MULTIPLE COLUMNS
);
dans SQL Server à l'aide de UNIQUE code> mot-clé. CREATE TABLE SomeTable
(
Id DECIMAL NOT NULL,
UserIdentifier NVARCHAR(100) NULL UNIQUE,
PRIMARY KEY (Id)
)
Cela ne permettra pas null code> s. Eh bien, il permettra à un seul null code>, après quoi il lancera une erreur de violation de contrainte.
en supposant em> que vous souhaitez plusieurs lignes avec la valeur remarque le second Vous pouvez plutôt utiliser un index conditionnel null code>, vous ne pourrez pas utiliser une contrainte de code code>, comme NULL code> est toujours une valeur (même si un inconnu). Par exemple: insérer code> échoue. P> un indice unique : P> CREATE TABLE dbo.YourTable (UserIdentifier nvarchar(100) NULL);
CREATE UNIQUE NONCLUSTERED INDEX UI_UI ON dbo.YourTable(UserIdentifier) WHERE UserIdentifier IS NOT NULL;
GO
INSERT INTO dbo.YourTable (UserIdentifier)
VALUES(NULL); -- Success
GO
INSERT INTO dbo.YourTable (UserIdentifier)
VALUES(NULL); --Success
GO
INSERT INTO dbo.YourTable (UserIdentifier)
VALUES(N'Steve'); --Success
GO
INSERT INTO dbo.YourTable (UserIdentifier)
VALUES(N'Jayne'); --Success
GO
INSERT INTO dbo.YourTable (UserIdentifier)
VALUES(N'Steve'); --Fails
GO
DROP TABLE dbo.YourTable;
Bien. Merci Monsieur.
Ah, je ne vois que maintenant que vous demandez la syntaxe en ligne d'un index unique filtré, intégrant l'index dans la table
Créer code>. C'est facile: il n'y en a pas. Malheureusement, T-SQL n'est pas parfaitement cohérent de cette manière. Cela n'a généralement pas beaucoup d'importance que vous ne compromettez pas de manière positive une seule déclaration pour une raison quelconque. Notez également que les contraintes i> (non indexés) ne permettent pas de filtrer; Ceci n'est possible que pour des index uniques.Peut-être Ce peut aider vous. Vous pouvez créer un index unique qui permet à NULL pour plusieurs enregistrements