[sql-server] 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;

이 오류가 발생합니다.

메시지 5074, 수준 16, 상태 4, 줄 2
‘Company_CountryID_FK’개체는 ‘CountryID’열에 종속됩니다.
메시지 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기둥 을 떨어 뜨리려면 어떻게해야 합니까?

감사.



답변

시험

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;


답변

테이블을 마우스 오른쪽 버튼으로 클릭하고 수정을 선택한 다음 속성으로 이동하여 마우스 오른쪽 버튼으로 클릭하고 기본 키 삭제를 선택할 수도 있습니다.