约束与主键
问题描述:
这两个创建表片段有区别吗?一个包含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,外键或检查 约束定义。约束条件是 特殊属性强制执行数据 完整性,并且它们可能为表及其列创建索引 。