2010-07-15 59 views
4

我想创建一个表并添加一个主键。PRIMARY KEY上的索引名称

至于我对MS SQL的理解,在主键上添加一个聚集索引,并将其命名为默认名称。

我想知道是否可以创建一个表并为默认创建的索引指定一个自定义名称,或者如何在创建表后更改默认名称。

谢谢!

+0

的指数?或列(键)? – 2010-07-15 06:15:33

+1

在SQL Server中,您不需要在主键上放置聚簇索引。是的,这是默认设置,但“主键非聚簇”也适用。除非你不添加另一个聚集索引,否则表将是堆。 – 2010-07-15 08:54:30

+0

索引请 – GibboK 2010-07-15 13:19:44

回答

9

当然 - 你可以在你CREATE TABLE声明定义PRIMARY KEY约束。

这将生成默认PRIMARY KEY

CREATE TABLE dbo.Table 
    (ID INT IDENTITY PRIMARY KEY, 
    .......) 

,但你完全可以定义名称的约束,也:

CREATE TABLE dbo.Table2 
    (ID INT IDENTITY CONSTRAINT PK_Table2 PRIMARY KEY, 
    ......) 
+0

好,但我怎样才能选择索引的名称,而不是使用默认的名称? – GibboK 2010-07-15 13:21:08

+0

@GlbboK:查看我的第二个示例 - 您可以为CONSTRAINT选择名称,该名称也是索引的名称:'CONSTRAINT PK_Table2 PRIMARY KEY' - 您可以选择是将其称为“PK_Table2”还是其他任何您可能想要的叫它.... – 2010-07-15 15:16:01

-3

当您创建一个集群主键时,您不会创建索引,而是将一个表组织为索引。

当您在SqlServer上使用主键创建表时,“集群主键”是默认选项。

http://msdn.microsoft.com/en-us/library/aa933131(SQL.80).aspx

+0

哦,是的,你** DO **创建一个索引!这是聚集索引 - 是的,该表由该索引排列 - 但它仍然是一个索引。 – 2010-07-15 08:44:05

+0

我使用oracle。在Oracle IOT表(组织索引)上类似于SqlServer Clustered Tables。 IOT表上的索引段被命名为TableName(是同一段)。 – x77 2010-07-15 09:37:12