【问题标题】:SQL Server 2005 How Create a Unique Constraint?SQL Server 2005 如何创建唯一约束?
【发布时间】:2010-09-09 01:30:11
【问题描述】:

如何在 SQL Server 2005 中对现有表创建唯一约束?

我正在寻找 TSQL 以及如何在数据库图中找到它。

【问题讨论】:

    标签: sql sql-server constraints


    【解决方案1】:
    ALTER TABLE dbo.<tablename> ADD CONSTRAINT
                <namingconventionconstraint> UNIQUE NONCLUSTERED
        (
                    <columnname>
        ) ON [PRIMARY]
    

    【讨论】:

      【解决方案2】:

      您正在寻找类似以下的内容

      ALTER TABLE dbo.doc_exz
      ADD CONSTRAINT col_b_def
      UNIQUE column_b
      

      MSDN Docs

      【讨论】:

        【解决方案3】:

        在管理工作室图表中选择表,如果需要,右键单击添加新列,右键单击列并选择“检查约束”,您可以添加一个。

        【讨论】:

          【解决方案4】:

          我还发现你可以通过数据库图表来做到这一点。

          通过右键单击表格并选择索引/键...

          单击“添加”按钮,然后将列更改为您希望唯一的列。

          更改是唯一的。

          单击关闭并保存图表,它会将其添加到表格中。

          【讨论】:

            【解决方案5】:
            ALTER TABLE [TableName] ADD CONSTRAINT  [constraintName] UNIQUE ([columns])
            

            【讨论】:

              【解决方案6】:

              SQL命令是:

              ALTER TABLE <tablename> ADD CONSTRAINT
                          <constraintname> UNIQUE NONCLUSTERED
                  (
                              <columnname>
                  )
              

              查看完整语法here

              如果您想从数据库图表中执行此操作:

              • 右键单击表格并选择“索引/键”
              • 点击添加按钮添加新索引
              • 在右侧的属性中输入必要的信息:
                • 您想要的列(单击省略号按钮选择)
                • set 对 Yes 是唯一的
                • 给它一个合适的名字

              【讨论】:

              • 它可以工作......但是......为什么约束显示在 INDEX 文件夹而不是 CONSTRAINTS 文件夹下。它与另一个图标一起显示,但无论如何它应该在约束文件夹中。
              【解决方案7】:

              警告:您设置为唯一的列中只能有一个空行。

              您可以使用 SQL 2008 中的过滤索引来做到这一点:

              CREATE UNIQUE NONCLUSTERED INDEX idx_col1
              ON dbo.MyTable(col1)
              WHERE col1 IS NOT NULL;
              

              请参阅Field value must be unique unless it is NULL 了解一系列答案。

              【讨论】:

              • 如何在 sql server 2005 中做到这一点?
              • 这在 sql server 2005 中无法实现。我强烈建议升级到更新的 RDBMS - 截至 2016 年 4 月 12 日它将是 officially unsupported
              【解决方案8】:

              在 SQL Server Management Studio Express 中:

              • 右击表格,选择ModifyDesign(For later Versions)
              • 右键单击字段,选择Indexes/Keys...
              • 点击添加
              • 对于,选择您希望唯一的字段名称
              • 对于Type,选择Unique Key
              • 点击关闭保存表格。

              【讨论】:

                【解决方案9】:

                要在表已创建时为一列或多列创建唯一约束,请使用以下 SQL:

                ALTER TABLE TableName ADd UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)
                

                允许为上述查询命名唯一约束

                ALTER TABLE TableName ADD CONSTRAINT un_constaint_name UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)
                

                MySQL / SQL Server / Oracle / MS Access 支持的查询。

                【讨论】:

                • UNIQUE NONCLUSTERED选项 PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON ?
                【解决方案10】:

                在某些情况下,可能需要在创建唯一键之前确保它不存在。在这种情况下,下面的脚本可能会有所帮助:

                IF Exists(SELECT * FROM sys.indexes WHERE name Like '<index_name>')
                    ALTER TABLE dbo.<target_table_name> DROP CONSTRAINT <index_name> 
                GO
                
                ALTER TABLE dbo.<target_table_name> ADD CONSTRAINT <index_name> UNIQUE NONCLUSTERED (<col_1>, <col_2>, ..., <col_n>) 
                GO
                

                【讨论】:

                  猜你喜欢
                  • 2011-01-11
                  • 2012-07-30
                  • 2011-06-27
                  • 2011-07-08
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-01-01
                  • 1970-01-01
                  • 2013-11-01
                  相关资源
                  最近更新 更多