Как каскадно переименовать PK на таблицу, MS SQL 2005 - PullRequest
0 голосов
/ 16 октября 2008

Я успешно смог переименовать таблицу и удалить все ограничения для этой таблицы с отношениями внешнего ключа и создать их резервные копии. Однако сейчас я нахожусь в точке, где PK_tblFoo существует в нескольких местах (когда я переношу таблицу в другую БД). Переименование таблицы не переименовывает первичный ключ.

Как бы я каскадно переименовал первичный ключ? Я переименовал таблицу, мне просто нужно выяснить эту часть.

Ответы [ 2 ]

1 голос
/ 16 октября 2008

Полагаю, мне нужно это вручную, отбросить все ограничения FK, запустить этого парня:

IF EXISTS ( SELECT  *
        FROM    sys.indexes
        WHERE   object_id = OBJECT_ID(N'[dbo].[tblFoo]')
                AND name = N'PK_tblBusinessListings' ) 
ALTER TABLE [dbo].[tblFoo] DROP CONSTRAINT [PK_tblBusinessListings]
GO
ALTER TABLE [dbo].[tblFoo]
ADD CONSTRAINT [PK_tblFoo_1] PRIMARY KEY CLUSTERED ( [ListingID] ASC )
    WITH ( PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF,
           ONLINE = OFF ) ON [PRIMARY]

Затем пройдитесь и установите все ограничения FK с новым именем PK .... errrgh .... это займет некоторое время.

0 голосов
/ 22 октября 2008

Вы также можете использовать инструмент рефакторинга, я знаю, Visual Studio Team Edition для специалистов по базам данных может справиться с этим.

...