1

SQL Server 200x/2012 で以下の 2 つの CREATE TABLE ステートメントに違いはありますか? このスクリプトを 2 つの異なるテーブルから生成しました。一方にはキー名が定義されており (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
4

1 に答える 1

1

同じように機能しますが、自然な名前の方が便利です。

1)制約を変更するときは、簡単に参照できます(わかりやすい名前を付けた場合)。

2)制約が原因でクエリが失敗した場合、この制約の名前が表示されるため、エラーの原因を簡単に知ることができます(適切な名前を付けた場合)。

于 2012-06-20T09:53:21.070 に答える