2008-10-16 7 views
0

J'ai réussi à renommer une table et à supprimer toutes les contraintes sur cette table avec des relations de clés étrangères et à les construire toutes en sauvegarde. Cependant, maintenant je suis à un point où le PK_tblFoo existe à plus d'un endroit (quand je transfère la table à une autre DB). Renommer la table ne renomme pas la clé primaire.Comment mettre en cascade PK rename sur la table, MS SQL 2005

Comment est-ce que je changerais le nom de la clé primaire en cascade? J'ai renommé la table, j'ai juste besoin de comprendre cette partie.

Répondre

1

je crois que je vais devoir manuellement, supprimer toutes les contraintes FK, exécutez ce type:

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] 

ensuite passer et mettre en place toute la contrainte FK avec le nouveau nom de PK .... errrgh. ... ça va prendre du temps.

0

Vous pouvez également utiliser un outil de refactoring, je sais que Visual Studio Team Edition pour les professionnels de la base de données pourrait gérer cela.

Questions connexes