主键约束

时间:2011-04-19 06:43:03

标签: sql-server primary-key constraints

这两个创建表格片段之间有区别吗?一个包含CONSTRAINT关键字,另一个不包含。

CREATE TABLE [dbo].[Person](
    [ID] [bigint] NOT NULL,
    [Name] [varchar](255) NOT NULL,
PRIMARY KEY CLUSTERED ([ID] ASC))


CREATE TABLE [dbo].[Person](
    [ID] [bigint] NOT NULL,
    [Name] [varchar](255) NOT NULL,
CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED ([ID] ASC))

我有一个以两种方式定义表格的数据库,我想知道我是否应该对此做些什么。

2 个答案:

答案 0 :(得分:8)

除了约束的命名之外没有区别。如果您没有指定一个,SQL Server将为您创建一个,但约束的名称不容易识别。

我更愿意为所有数据库对象提供良好的命名约定,而不是依赖于SQL Engine生成的名称。

答案 1 :(得分:0)

CONSTRAINT [PK_Person]部分是可选的。您可以阅读更多相关信息here;来自MSDN页面:

  

<强>约束

     

是一个可选的关键字,表示   PRIMARY KEY的开头,NOT NULL,   独特,外键或检查   约束定义。约束是   强制数据的特殊属性   完整性,他们可能会创建索引   对于表格及其列。