Ответ 1
Try
alter table company drop constraint Company_CountryID_FK
alter table company drop column CountryID
Я создал внешний ключ (в 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
?
Спасибо.
Try
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
Вы не сможете отбросить столбец до тех пор, пока не снимете ограничение.