Mise à jour de SQL Tableau Dans Enterprise Manager - Clé étrangère Questions
-
04-10-2019 - |
Question
J'ai une table avec un tas de clefs étrangères.
Table Vehicles
-----------
ColorID -> Color.ID
MakeID -> Make.ID
ModelID -> Model.ID
etc...
Mon problème est que j'ai oublié quelques colonnes et je dois les ajouter. Je peux les ajouter par un clic droit sur la table et en choisissant « Design », mais pas si je veux les rendre NOT NULL, ou supprimer une colonne. Je pourrais aussi générer une baisse / Créer script, mais je reçois cette erreur:
Msg 3726, Level 16, State 1, Line 4
Could not drop object 'dbo.SellVehicles' because it is referenced by a FOREIGN KEY constraint.
Dois-je passer et supprimer chaque FK puis déposer / créer, puis les ajouter ou est-il un moyen rapide / indolore de faire cela? Est-il possible de laisser tomber et de recréer ces rapidement FKs?
Pourquoi pas
IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_SellVehicles_Conditions]') AND parent_object_id = OBJECT_ID(N'[dbo].[SellVehicles]'))
ALTER TABLE [dbo].[SellVehicles] DROP CONSTRAINT [FK_SellVehicles_Conditions]
GO
éliminer cette erreur? Le FK toujours l'autre table référencée?
La solution
La contrainte qui déclenche l'erreur est pas sur la table de dbo.SellVehicles
; il est sur une table références la table dbo.SellVehicles
. Les références à la couleur, la marque et tables modèle ne sont pas la question -. Vous êtes tenter de déposer / supprimer l'enfant dans une relation parent-enfant
Je doute que la contrainte pour tester existait avant la ALTER TABLE ... DROP CONSTRAINT ...
.
Dans SSMS, vous pouvez faire un clic droit sur une table, et sélectionnez « dépendances ». Il y a un bouton radio pour sélectionner l'affichage des objets qui dépendent de la table dbo.SellVehicles
, ou les choses que la table dbo.SellVehicles
dépend.