如何在我的列上创建唯一约束(SQL Server 2008 R2)?

问题描述 投票:0回答:6

我有 SQL Server 2008 R2,我想设置一个唯一列。

似乎有两种方法可以做到这一点:“唯一索引”和“唯一约束”。 它们与我的理解没有太大区别,尽管大多数人建议使用唯一约束,因为您也会自动获得索引。

如何创建唯一约束?

ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)

有没有办法通过 SQL Server Management Studio 创建唯一约束?

sql sql-server sql-server-2008 unique-constraint
6个回答
202
投票

通过 GUI 将列设置为 SQL Server 中的唯一:

他们真的让你在谷仓里跑来跑去,用 GUI 来做这件事:

开始之前,请确保您的列不违反唯一约束。

  1. 打开 SQL Server Management Studio。
  2. 右键单击您的表格,单击“设计”。
  3. 右键单击要编辑的列,出现弹出菜单,单击索引/键。
  4. 单击“添加”按钮。
  5. 展开“常规”选项卡。
  6. 确保在“列”框中选择了要设置为唯一的列。
  7. 将“类型”框更改为“唯一密钥”。
  8. 点击“关闭”。
  9. 您在文件窗口中看到一个小星号,这意味着更改尚未保存。
  10. 按“保存”或按 Ctrl+s。 它应该保存,并且您的列应该是唯一的。

或者从 SQL 查询窗口将列设置为唯一:

alter table location_key drop constraint pinky;
alter table your_table add constraint pinky unique(yourcolumn);

更改立即生效:

Command(s) completed successfully.

69
投票

要通过 GUI 创建这些约束,您需要“索引和键”对话框,而不是检查约束。

但就您而言,您只需要运行已有的代码即可。根本不需要进入表情对话


23
投票

这是通过 GUI 的另一种方法,它可以完全执行脚本的操作,即使它通过对象资源管理器中的索引(而不是约束)。

  1. 右键单击“索引”,然后单击“新建索引...”(注意:这是 如果您在设计视图中打开表格,则禁用)

enter image description here

  1. 为新索引命名(“U_Name”),选中“唯一”, 然后点击“添加...”

enter image description here

  1. 在下一个窗口中选择“名称”列n

enter image description here

  1. 在两个窗口中单击“确定”

9
投票

没有明确涵盖的一件事是 microsoft sql 正在后台为添加的约束创建唯一索引

create table Customer ( id int primary key identity (1,1) , name nvarchar(128) ) 

--Commands completed successfully.

sp_help Customer

---> index
--index_name    index_description   index_keys
--PK__Customer__3213E83FCC4A1DFA    clustered, unique, primary key located on PRIMARY   id

---> constraint
--constraint_type   constraint_name delete_action   update_action   status_enabled  status_for_replication  constraint_keys
--PRIMARY KEY (clustered)   PK__Customer__3213E83FCC4A1DFA  (n/a)   (n/a)   (n/a)   (n/a)   id


---- now adding the unique constraint

ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)

-- Commands completed successfully.

sp_help Customer

---> index
---index_name   index_description   index_keys
---PK__Customer__3213E83FCC4A1DFA   clustered, unique, primary key located on PRIMARY   id
---U_Name   nonclustered, unique, unique key located on PRIMARY name

---> constraint
---constraint_type  constraint_name delete_action   update_action   status_enabled  status_for_replication  constraint_keys
---PRIMARY KEY (clustered)  PK__Customer__3213E83FCC4A1DFA  (n/a)   (n/a)   (n/a)   (n/a)   id
---UNIQUE (non-clustered)   U_Name  (n/a)   (n/a)   (n/a)   (n/a)   name

如您所见,有一个新的约束和一个新的索引U_Name


3
投票

当您处于表格的 Design 视图中时,单击所需的列并展开顶部工具栏上的 Table Designer 选项卡。选择索引/键选项。~

Table Designer tool tab

然后添加一个新约束并选择正确的列并将其类型设置为Unique Key,并以某种方式命名。就这样! ^^ Creating unique constraint


0
投票
  1. ALTER TABLE [<Table_Name_Here>] DROP CONSTRAINT [<Constraint_Name_Here>];

    • 此语句从表
      <Constraint_Name_Here>
      中删除名为
      <Table_Name_Here>
      的约束。
    • 约束强制数据库中的数据完整性。在这种情况下,指定的约束将被删除。
  2. ALTER TABLE [<Table_Name_Here>] ADD CONSTRAINT [<Constraint_Name_Here>] UNIQUE ([<Column_Name_Here>]);

    • 此语句向表
      <Constraint_Name_Here>
      添加一个名为
      <Table_Name_Here>
      的新约束。
    • 约束被定义为列
      <Column_Name_Here>
      上的 UNIQUE 约束。
    • 这意味着
      <Column_Name_Here>
      列中的值在表中的所有行中必须是唯一的。

总结:

  • 第一个语句删除现有约束。
  • 第二条语句向特定列添加新的 UNIQUE 约束。
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.