在SQL Server Management Studio中使列数据唯一



假设我有一个包含多个列的数据库。有一个主键,Users。但是还有另外一列,用户名。当一个新的用户名输入到数据库中时,我想检查以确保它是唯一的。由于已经有一个主键了,也许我需要对用户名进行限制。

我不知道该怎么做。当我右键单击列名并显示"Indexes/Keys"时,我看到的是现有主键的"Users_Key",而不是"Users"。所以我必须添加一些类似"Username_Keys"的内容?当我这样做时,我在对象资源管理器中的任何位置都看不到它。但我确实在"密钥"下看到了Users_Key?

可以在SSMS中使用查询吗?

因为你可以这样做:

ALTER TABLE tablename
ADD UNIQUE (Username)

其中表被称为tablename,用户名列(您希望它是唯一的)被称为Username

对于多列,这样做:

ALTER TABLE tablename
ADD CONSTRAINT uc_NameofConstraint UNIQUE (column1,column2)

老实说,最好用第二种方式,因为以后可能出于某种原因需要放弃约束。像这样:

ALTER TABLE tablename
DROP CONSTRAINT uc_NameofConstraint

不要忘记UNIQUE约束有大小限制(我相信它大约是900字节,但不是100%确定),所以请确保UserName不是像NVARCHAR(MAX)那样的列类型,否则它不会允许您这样做!但无论如何,让任何人的用户名超过100个字符都是疯了!

最新更新