Как удалить внешний ключ в 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;


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



спасибо.

999   8  

8 ответов:

попробовать

alter table company drop constraint Company_CountryID_FK


alter table company drop column CountryID

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

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

Я думаю, что это будет полезно для вас...

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
alter table company drop constraint Company_CountryID_FK

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

alter table company drop **constraint** Company_CountryID_FK;

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

вы пытаетесь удалить ограничение FK или сам столбец?

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

alter table company drop constraint Company_CountryID_FK

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

Comments

    Ничего не найдено.