【问题标题】:Make a varchar(50) column unique使 varchar(50) 列唯一
【发布时间】:2011-12-09 13:21:34
【问题描述】:

我在 SQL Server 数据库中有一个列(代表电子邮件),其数据类型为 varchar(50),我想让它唯一(不允许使用相同的两个电子邮件地址)。我找不到使此类列在 SQL Server Management Studio 中唯一的方法。

怎么做?

【问题讨论】:

    标签: sql-server unique varchar


    【解决方案1】:

    在 T-SQL 中是

    ALTER  TABLE  MyTable WITH CHECK 
       ADD CONSTRAINT UQ_MyTable_Email UNIQUE (EmailAddress)
    

    或作为显式索引

    CREATE  UNIQUE INDEX IXU_Email ON MyTable (EmailAddress)
    

    编辑:我看不到如何在 SSMS GUI 中创建约束:其他答案显示了如何管理索引。不过我只使用 SQL,从不使用 GUI 来完成这种工作

    【讨论】:

    • 当我使用 T-SQL 创建索引时,我可以在 SQL Server 管理工作室中找到该索引吗?
    • 在对象资源管理器中,找到您的表。 F5 刷新,你会在那里看到它。
    • 然后展开表格并查看名为“Indexes”的文件夹。
    • @Tomas:我假设是非集群的,因为您已经有一个主键。这将 默认 被聚集,并且您只能拥有一个聚集索引。 (请注意,“主键”和“集群/非集群”是不同的想法,当您深入挖掘但超出范围时)
    • 要在 SSMS 中执行此操作,请右键单击表名并从上下文菜单中选择“设计”。右键单击打开的设计窗口并选择索引键。在打开的对话框中单击“添加”按钮。突出显示新索引,如果需要,更改属性中的名称;将“Is Unique”属性更改为 yes,并更改类型“Unique Key” 单击 Columns 属性中的省略号,然后在弹出窗口中使用下拉菜单选择您想要唯一的列。关闭索引/键窗口并保存设计窗口。瞧
    【解决方案2】:

    在表格下方的Object Explorer 中,右键单击Indexes 文件夹并选择New Index...

    在出现的窗口中输入Index name:,勾选Unique复选框并从Add...按钮添加您的电子邮件字段,然后点击确定。

    【讨论】:

      【解决方案3】:

      试试这个:

      ALTER TABLE [dbo].[TableName] ADD CONSTRAINT UNQ__TableName__ColumnName UNIQUE ([ColumnName])
      

      从这里:

      http://msdn.microsoft.com/en-us/library/ms191166.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-23
        • 1970-01-01
        • 2013-11-27
        • 1970-01-01
        • 2022-09-26
        • 2020-04-27
        • 2023-03-13
        • 1970-01-01
        相关资源
        最近更新 更多