Jak upuścić klucz obcy w SQL Server?

Utworzyłem klucz obcy (w SQL serverze) przez:

alter table company add CountryID varchar(3);
alter table company add constraint Company_CountryID_FK foreign key(CountryID) 
references Country;

Następnie uruchamiam to zapytanie:

alter table company drop column CountryID;

I dostaję ten błąd:

Msg 5074, Poziom 16, Stan 4, Linia 2
Obiekt "Company_CountryID_FK" jest zależny od Kolumny "CountryID".
Msg 4922, Poziom 16, Stan 9, Linia 2
ALTER TABLE Drop COLUMN CountryID nie powiodło się, ponieważ jeden lub więcej obiektów uzyskuje dostęp do tej kolumny

[[4]}próbowałem tego, ale nie wydaje się, aby praca:
alter table company drop foreign key Company_CountryID_FK; 
alter table company drop column CountryID;

Co muszę zrobić, aby porzucić CountryID kolumnę?

Dzięki.
Author: marc_s, 2008-09-18

8 answers

Try

alter table company drop constraint Company_CountryID_FK


alter table company drop column CountryID
 261
Author: Mike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-24 03:09:33

To zadziała:

ALTER TABLE [dbo].[company] DROP CONSTRAINT [Company_CountryID_FK]
 44
Author: Jared,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-18 14:57:29

Myślę, że to ci pomoże...

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)

Usunie ograniczenie klucza obcego na podstawie określonej tabeli i kolumny.

 19
Author: Samir Savasani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-31 12:45:01

Najpierw sprawdź istnienie ograniczenia, a następnie go upuść.

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
 17
Author: Naeem Iqbal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-13 22:23:54
alter table company drop constraint Company_CountryID_FK
 10
Author: boes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-26 11:57:31

Nie znam MSSQL ale czy nie byłoby:

alter table company drop **constraint** Company_CountryID_FK;
 4
Author: Dave Costa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-26 11:57:39

Możesz również kliknąć prawym przyciskiem myszy tabelę, wybrać Modyfikuj, następnie przejść do atrybutu, kliknąć go prawym przyciskiem myszy i wybrać drop primary key.

 1
Author: Gerardo Jaramillo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-01 17:37:46

[1]}Czy próbujesz zrzucić ograniczenie FK lub samą kolumnę?

Aby usunąć ograniczenie:

alter table company drop constraint Company_CountryID_FK

Nie będziesz w stanie opuścić kolumny, dopóki nie opuścisz ograniczenia.

 1
Author: Philip Wade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-26 13:34:53