Как дать имя ограничению первичного ключа? - PullRequest
1 голос
/ 18 августа 2011

У меня есть (другой) вопрос об индексации.

Я использую следующий код:

CREATE TABLE [dbo].[PnrDetails1](
        [OId] [int] IDENTITY(1,1) NOT NULL ,
    [file_name] [varchar](256) NOT NULL,
    [gds_id] [int] NOT NULL,
    [pnr_locator] [varchar](15) NOT NULL,
    [first_cust_name] [varchar](50) NOT NULL,
    [ticket_number] [varchar](20) NOT NULL,
    [full_price] [decimal](18, 0) NOT NULL,
    [currency_desc] [varchar](4) NOT NULL,
    [user_name] [varchar](50) NOT NULL,
    [save_time] [datetime] NOT NULL,
    [update_time] [datetime] NOT NULL,
    [clerk_id] [int] NOT NULL,
    [isUpdated] [bit] NOT NULL,
    [isDeleted] [bit] NOT NULL,
    [pnr_file_id] [int] NOT NULL
) ON [PRIMARY]

ALTER TABLE [dbo].[PnrDetails1] ADD PRIMARY KEY CLUSTERED 
(
[OId] ASC
)ON [PRIMARY]

это на самом деле скрипт SQL Server 2008, созданный для меня, но когда я смотрю на проводник объектов, я вижу уродливое имя индекса (что-то вроде PK_ PnrDetai _CB394B1958F2C25C). Как я могу это изменить? Если так?

Ответы [ 2 ]

4 голосов
/ 18 августа 2011

Хотя я согласен с @marc_s, что вы всегда должны объявлять эти имена заранее, я не согласен с тем, что вам нужно удалить и заново создать:

EXEC sp_rename 'PK_PnrDetai_CB394B1958F2C25C', 'my_new_shiny_name', OBJECT;
3 голосов
/ 18 августа 2011

Вы можете (и вам следует ) явно дать имя ограничению вашего первичного ключа:

ALTER TABLE [dbo].[PnrDetails1] 
ADD CONSTRAINT PK_PnrDetails1
PRIMARY KEY CLUSTERED([OId] ASC) ON [PRIMARY]

Вы можете сделать это только во время создания, так что в вашем случае вам, вероятно, придется сначала удалить его, а затем заново создать его с правильным, читаемым именем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...