Обновление таблицы SQL в Enterprise Manager - вопросы внешнего ключа - PullRequest
0 голосов
/ 19 сентября 2010

У меня есть таблица с целой кучей ФК.

Table Vehicles
-----------
ColorID -> Color.ID
MakeID -> Make.ID
ModelID -> Model.ID
etc...

Моя проблема в том, что я забыл несколько столбцов и мне нужно добавить их.Я могу добавить их, щелкнув правой кнопкой мыши по таблице и выбрав «Дизайн», но не в том случае, если я хочу сделать их НЕ пустыми или удалить столбец.Я также мог бы создать сценарий удаления / создания, но я получаю эту ошибку:

Msg 3726, Level 16, State 1, Line 4
Could not drop object 'dbo.SellVehicles' because it is referenced by a FOREIGN KEY constraint.

Нужно ли мне пройти и удалить каждый FK, а затем удалить / создать, затем добавить их обратно или быстро/ безболезненный способ сделать это?Есть ли способ быстро удалить и воссоздать эти FK?

Почему

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

не устраняет эту ошибку?FK все еще находится на другой таблице, на которую ссылаются?

1 Ответ

4 голосов
/ 19 сентября 2010

Ограничение, вызывающее ошибку: отсутствует в таблице dbo.SellVehicles ;это таблица, которая ссылается на таблицу dbo.SellVehicles.Ссылки на таблицы Color, Make и Model не являются проблемой - вы пытаетесь удалить / удалить дочерний элемент в родительских отношениях.

Я сомневаюсь, что ограничение, которое вы проверяли, существовало доALTER TABLE ... DROP CONSTRAINT ....

В SSMS вы можете щелкнуть правой кнопкой мыши таблицу и выбрать «Зависимости».Есть переключатель для выбора просмотра объектов, которые зависят от таблицы dbo.SellVehicles, или от того, от чего зависит таблица dbo.SellVehicles.

...