2012-06-20 5 views
1

Есть ли разница между приведенными ниже инструкциями CREATE TABLE в SQL Server 200x/2012? Я сгенерировал этот скрипт из двух разных таблиц: у одного было определено имя ключа (PK_Table1), тогда как у другого было какое-то случайно сгенерированное число, связанное с ним (PK_Table1_1084F446).имя первичного ключа обязательное поле?

CREATE TABLE [dbo].[Table1](
    [ID] [uniqueidentifier] NOT NULL, 
    <<Other Column declaration here>> 
PRIMARY KEY CLUSTERED 
(
    [ID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 
GO 
Few more non-clustered indexes declaration here 


CREATE TABLE [dbo].[Table1](
    [ID] [uniqueidentifier] NOT NULL, 
    <<Other Column declaration here>> 
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED 
(
    [ID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 
GO 
Few more non-clustered indexes declaration here 
+1

Единственное различие заключается в том, что вы указали имя для ограничения во второй таблице create. – sa3m

ответ

1

Он работает таким же образом, но естественные имена более удобны:

1) при изменении ограничения вы можете легко сослаться на него (если вы дали разумное название);

2) когда запрос завершился с ошибкой из-за ограничения, отображается имя этого ограничения, поэтому вы можете легко узнать причину ошибки (если вы дали разумное имя).

Смежные вопросы