Как удалить внешний ключ в 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 не удалось, так как один или несколько объектов попадают в этот столбец

Я пробовал это, но он, похоже, не работает:

alter table company drop foreign key Company_CountryID_FK; 
alter table company drop column CountryID;

Что мне нужно сделать, чтобы отбросить столбец CountryID?

Спасибо.

Ответ 1

Try

alter table company drop constraint Company_CountryID_FK


alter table company drop column CountryID

Ответ 2

Это будет работать:

ALTER TABLE [dbo].[company] DROP CONSTRAINT [Company_CountryID_FK]

Ответ 3

Я думаю, это поможет вам...

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)

Он удалит ограничение внешнего ключа на основе конкретной таблицы и столбца.

Ответ 4

Сначала проверьте существование ограничения, затем опустите его.

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

Ответ 5

alter table company drop constraint Company_CountryID_FK

Ответ 6

Я не знаю MSSQL, но не будет ли это:

alter table company drop **constraint** Company_CountryID_FK;

Ответ 7

Вы также можете щелкнуть правой кнопкой мыши по таблице, выбрать "изменить", затем перейти к атрибуту, щелкнуть правой кнопкой мыши по нему и выбрать "drop primary key".

Ответ 8

Вы пытаетесь отказаться от ограничения FK или самого столбца?

Чтобы удалить ограничение:

alter table company drop constraint Company_CountryID_FK

Вы не сможете отбросить столбец до тех пор, пока не снимете ограничение.