2010-12-15 12 views
18

Mam tabelę reprezentującą użytkowników. Gdy użytkownik zostanie usunięty uzyskać:Jak edytować tabelę, aby włączyć KASOWO USUŃ?

DELETE skonfliktowany z przymusu REFERENCE

Najwyraźniej CASCADE DELETE nie jest tak łatwe, jak sobie wyobrażałem w SQL Server, a potrzebuje opcja należy dodać do stół.

Problem polega na tym, że nie wiem, jak dodać opcję CASCADE DELETE.

Używam: SQL Server 2008. Wszelkie pomysły, jak to zrobić?

Odpowiedz

25

Przeczytaj ten artykuł Microsoft w pierwszej kolejności. Read Me. Używam GUI podczas projektowania, więc tutaj jest obraz tego, jak jest wybrany w SSMS. alt text Składnia dodany do klucza obcego jest „ON DELETE CASCADE”

17

Google ALTER TABLE DROP CONSTRAINT, następnie ALTER TABLE ADD CONSTRAINT:

ALTER TABLE

Oto krótki przykład:

CREATE TABLE A 
(
ID INTEGER NOT NULL UNIQUE 
); 

CREATE TABLE B 
(
ID INTEGER NOT NULL UNIQUE 
    CONSTRAINT fk__B__A 
     REFERENCES A (ID) 
); 

-- Oops! Forgot the CASCADE referential actions. 
-- DROP the constraint then recreate it: 

ALTER TABLE B DROP 
    CONSTRAINT fk__B__A; 

ALTER TABLE B ADD 
    CONSTRAINT fk__B__A 
     FOREIGN KEY (ID) 
     REFERENCES A (ID) 
     ON DELETE CASCADE 
     ON UPDATE CASCADE; 
+1

Myślę, że RadiantHex oznacza, że ​​RadiantHex chce usunąć wiersze powiązane z wiązaniem, korzystając z kaskadowych usunięć, a nie usuwać wiązań, aby wiersze mogły zostać usunięte. –

+4

@ Mark Schultheiss: Myślę, że pan TA ma na myśli to, że pan TA sugeruje, że ograniczenia nie można zmienić (tj. Nie ma składni "ALTER TABLE..ALTER CONSTRAINT"), raczej ograniczenie musi zostać usunięte, a następnie odtworzone. Dodałem przykład dla jasności. – onedaywhen

9

oto sposób chciałbym dodać „Usuń” kaskadowe funkcję do istniejący klucza obcego w SQL Server Management Studio.

Najpierw znajdź swój klucz obcy i otwórz jego "DROP i CREATE To" w nowym oknie zapytania.

Drop and Create

Następnie wystarczy dodać "ON DELETE CASCADE" do komendy "ADD CONSTRAINT":

On delete cascade

Wtedy właśnie HIT przycisk "Wykonaj", aby uruchomić kwerendę.

Wykonane zadanie!

Powiązane problemy