Как удалить внешний ключ в SQL Server?
Я создал внешний ключ (в SQL Server) с помощью:
alter table company add CountryID varchar(3);
alter table company add constraint Company_CountryID_FK foreign key(CountryID)
references Country;
затем я запускаю этот запрос:
alter table company drop column CountryID;
и я получаю эту ошибку:
Msg 5074, Уровень 16, Состояние 4, Строка 2
Объект 'Company_CountryID_FK' зависит от столбца 'CountryID'.
Msg 4922, Уровень 16, Состояние 9, Строка 2
Ошибка ALTER TABLE DROP COLUMN CountryID, так как один или несколько объектов обращаются к этому столбцу
I пробовали это, но, похоже, не работает:
alter table company drop foreign key Company_CountryID_FK;
alter table company drop column CountryID;
что мне нужно сделать, чтобы бросить ?
спасибо.
8 ответов:
попробовать
alter table company drop constraint Company_CountryID_FK alter table company drop column CountryID
Я думаю, что это будет полезно для вас...
DECLARE @ConstraintName nvarchar(200) SELECT @ConstraintName = KCU.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU ON KCU.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG AND KCU.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA AND KCU.CONSTRAINT_NAME = RC.CONSTRAINT_NAME WHERE KCU.TABLE_NAME = 'TABLE_NAME' AND KCU.COLUMN_NAME = 'TABLE_COLUMN_NAME' IF @ConstraintName IS NOT NULL EXEC('alter table TABLE_NAME drop CONSTRAINT ' + @ConstraintName)он удалит ограничение внешнего ключа на основе конкретной таблицы и столбца.
сначала проверьте наличие ограничения, а затем отбросьте его.
if exists (select 1 from sys.objects where name = 'Company_CountryID_FK' and type='F') begin alter table company drop constraint Company_CountryID_FK end
вы также можете щелкнуть правой кнопкой мыши по таблице, выбрать Изменить, затем перейти к атрибуту, щелкнуть правой кнопкой мыши по нему и выбрать drop primary key.
вы пытаетесь удалить ограничение FK или сам столбец?
удалить ограничение:
alter table company drop constraint Company_CountryID_FKвы не сможете удалить столбец, пока не удалите ограничение.
Comments