2010-08-16 11 views
15

Używam programu Microsoft SQL Server 2005 i jestem względnie nowy w SQL.Błąd programu SQL Server: "%" nie jest ograniczeniem. Nie można usunąć ograniczenia. Zobacz poprzednie błędy

Istnieje związek między dwiema tabelami, "Zasoby" i "Źródła grupy", w bazie danych "Informacje". Zasoby mają klucz obcy, "id", w Group_Resources, o nazwie "resource_id". Istnieje ograniczenie klucza obcego, "fk_gr_res_resources", między tymi dwoma.

Zostałem ustanowiony jako właściciel bazy danych i mam pełne uprawnienia do odczytu/zapisu/tworzenia/usuwania.

Chcę usunąć klucz obcy, więc wykonywane następujące zapytanie:

ALTER TABLE [Information].[group_resources] DROP CONSTRAINT fk_gr_res_resources 

i otrzymała następujący błąd:

'fk_gr_res_resources' is not a constraint. Could not drop constraint. See previous errors.

Jestem zdezorientowany, ponieważ jest to ograniczenie i nie ma błędów w pisowni. Czy zamierzam usunąć to niewłaściwie? Czy usuwam ograniczenie z niepoprawnej tabeli? Wszelkie sugestie byłyby bardzo mile widziane, & proszę nie płonąć mnie: Jestem w końcu dla SQL.

+2

Czy próbowałeś usunąć ograniczenie z drugiej tabeli? To by odpowiadało na twoje pytanie, czy usuwasz je z właściwego miejsca. – SqlRyan

+0

Tak- Próbowałem usunąć ograniczenie z obu "gropus_resources" i "resources". Wciąż dostaję ten sam błąd. Dzieki za sugestie. – amanda

Odpowiedz

21

Otrzymujesz ten błąd:

Msg 3728, Level 16, State 1, Line 1 
'fk_gr_res_resources' is not a constraint. 
Msg 3727, Level 16, State 0, Line 1 
Could not drop constraint. See previous errors. 

Ponieważ ograniczenie FK nie istnieje!

Czy jesteś pewien, żeInformationjest właściwa nazwa schematu i niedbo?

1. SQL okaże się, że nie istnieje FK:

SELECT * FROM sysobjects WHERE name = 'fk_gr_res_resources' 

2. Ups, myliłem się w mojej oryginalnej odpowiedzi, tutaj jest poprawna składnia SQL Server:

ALTER TABLE <table_name> 
DROP CONSTRAINT <foreignkey_name> 

3. Przykład bazy danych:

IF EXISTS (SELECT * FROM sysobjects WHERE name = 'fk_gr_res_resources') 
BEGIN 
    ALTER TABLE Group_Resources 
    DROP CONSTRAINT fk_gr_res_resources 
END; 

4. Spróbuj uruchomić to:

IF NOT EXISTS (SELECT * FROM sysobjects WHERE name = 'fk_gr_res_resources') 
BEGIN 
    ALTER TABLE Group_Resources 
    ADD CONSTRAINT fk_gr_res_resources 
    FOREIGN KEY (resource_id) 
    REFERENCES Resources(id) /* make sure Resources.id is a PRIMARY KEY */ 
END; 

5. Następnie spróbować i zobaczyć, czy nadal się tego błędu:

ALTER TABLE Group_Resources 
DROP CONSTRAINT fk_gr_res_resources 

Druga składnia była dla MySQL, przepraszamy:

ALTER TABLE <table_name> 
DROP FOREIGN KEY <foreignkey_name> 

Dzięki za poprawienie mi kucyków OMG!

+0

Dzięki za przykład kodu. Włożyłem w następujących przypadkach: "ALTER TABLE DROP FOREIGN KEY " i dała ten błąd: "Niepoprawna składnia w pobliżu słowo kluczowe 'obcy'." Taki sam układ z drugim przykładem. (Nawiasem mówiąc, wszystko jest napisane poprawnie, więc nie jestem pewien, dlaczego ciągle dostaję błędy: składnia wygląda na poprawną.) – amanda

+0

@OMG Kuce: dzięki za wskazanie mojego błędu, a nie za głosowanie w dół! – JohnB

+0

Ta odpowiedź rozwiązała mój problem :) @JohnB & @OMG Kucyki: Dziękuję bardzo za sugestie !! – amanda

Powiązane problemy