约束与主键

问题描述:

这两个创建表片段有区别吗?一个包含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)) 

我有两个通道中定义的表的数据库,我想知道如果我应该做的事情。

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

我宁愿给我的所有数据库对象良好的命名约定,而不是依赖于SQL引擎生成的名称。

CONSTRAINT [PK_Person]部分是可选的。你可以阅读更多关于它here;从MSDN页:

约束

是可选关键字指示 开始一个PRIMARY KEY,NOT NULL, UNIQUE,外键或检查 约束定义。约束条件是 特殊属性强制执行数据 完整性,并且它们可能为表及其列创建索引 。