Обновление SQL Table в Enterprise Manager - внешние ключевые вопросы
-
04-10-2019 - |
Вопрос
У меня есть стол с целой кучей фкс.
Table Vehicles
-----------
ColorID -> Color.ID
MakeID -> Make.ID
ModelID -> Model.ID
etc...
Моя проблема заключается в том, что я забыл несколько столбцов, и мне нужно их добавить. Я могу добавить их в правой кнопкой мыши на столе и выбрать «дизайн», но не если я хочу сделать их не NULL, или удалить столбец. Я также мог бы создать скрипт Shop / Create, но я получаю эту ошибку:
Msg 3726, Level 16, State 1, Line 4
Could not drop object 'dbo.SellVehicles' because it is referenced by a FOREIGN KEY constraint.
Нужно ли пройти и удалить каждый 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
Устранить эту ошибку? ФК все еще на другом столе ссылается?
Решение
Ограничение, которое вызывает ошибку, не на dbo.SellVehicles
стол; Это на столе, что использованная литература то dbo.SellVehicles
стол. Ссылки на цвет, Make и Model Tables не являются проблемой - вы пытаетесь бросить / удалить ребенка в отношениях родительской дочерней связи.
Я сомневаюсь, что ограничение вы тестируете для существования до ALTER TABLE ... DROP CONSTRAINT ...
.
В SSMS вы можете щелкнуть правой кнопкой мыши на столе и выберите «Зависимости». Есть кнопка переключателя для выбора просмотра объектов, которые зависят от dbo.SellVehicles
стол или вещи, которые dbo.SellVehicles
таблица зависит от.