使用唯一条目列在SQL中创建表

时间:2017-03-30 10:28:58

标签: sql sql-server tsql

我有下表:

Create table [dbo].[Medewerker]
(
    [Id] int PRIMARY KEY IDENTITY 91,1 NOT NULL,
    [Wachtwoord] varchar(50) NOT NULL,
    [Rechten] varchar(100) NOT NULL,
    [Gebruikersnaam] varchar(30) UNIQUE NOT NULL
)

我正在努力使其成为底线使得“Gebruikersnaam”列中的每个条目都是唯一的。我做得对吗?你怎么称呼这种类型的功能?

2 个答案:

答案 0 :(得分:4)

  

“Gebruikersnaam”列中的每个条目都是唯一的

是的,这是对的。基本上你所做的只不过是在你的专栏Gebruikersnaam中添加UNIQUE CONSTRAINT

根据评论,是的,最好明确命名您的约束,而不是让DB引擎隐含地指定默认名称

Create table [dbo].[Medewerker]
(
    [Id] int PRIMARY KEY IDENTITY 91,1 NOT NULL,
    [Wachtwoord] varchar(50) NOT NULL,
    [Rechten] varchar(100) NOT NULL,
    [Gebruikersnaam] varchar(30) NOT NULL,
    CONSTRAINT idx_unique_Gebruikersnaam UNIQUE(Gebruikersnaam) --Here
)

答案 1 :(得分:0)

您已经创建了一个唯一约束,即它所谓的约束 但是,最好为索引和约束命名,也可以为主键命名。请看下面的例子。

您可以为现有表创建一个唯一索引,如

CREATE UNIQUE NONCLUSTERED INDEX idx_Gebruikersnaam
ON dbo.Medewerker(Gebruikersnaam)
表中的

创建它看起来像这样

Create table [dbo].[Medewerker]
(
    [Id] int IDENTITY 91,1 NOT NULL,
    [Wachtwoord] varchar(50) NOT NULL,
    [Rechten] varchar(100) NOT NULL,
    [Gebruikersnaam] varchar(30) NOT NULL,

    constraint PK_MedewerkerId primary key (Id),
    constraint idx_Gebruikersnaam unique (Gebruikersnaam)        
)

我也会使用nvarchar代替varchar。