2010-12-15 8 views
18

Ich habe eine Tabelle, die Benutzer darstellt. Wenn ein Benutzer gelöscht wird, erhalte ich:Wie bearbeite ich eine Tabelle, um CASCADE DELETE zu aktivieren?

DELETE-Anweisung in Konflikt mit der REFERENCE-Einschränkung

Offenbar ist CASCADE DELETE nicht so einfach, wie ich in SQL Server vorgestellt, und die Option muss die hinzugefügt werden Tabelle.

Das Problem ist: Ich kann nicht herausfinden, wie Sie die CASCADE DELETE Option hinzufügen.

Ich verwende: SQL Server 2008. Irgendwelche Ideen wie man das macht?

Antwort

25

erste Microsoft-Artikel lesen. Read Me. Ich benutze die GUI während des Entwurfs, also hier ist ein Bild davon, wie es in SSMS ausgewählt ist. alt text Die Syntax an den Fremdschlüssel hinzugefügt ist "ON DELETE CASCADE"

17

Google ALTER TABLE DROP CONSTRAINT, dann ALTER TABLE ADD CONSTRAINT:

ALTER TABLE

Hier ist ein kurzes Beispiel:

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

Ich denke, was der RadiantHex bedeutet, ist RadiantHex möchte die Zeilen mit der Einschränkung mit kaskadierenden Löschungen löschen nicht die Einschränkungen löschen, damit die Zeilen entfernt werden können. –

+4

@Mark Schultheiss: Ich denke, was Herr TA meint, ist Herr TA schlägt vor, dass die Beschränkung nicht geändert werden kann (d. H. Es gibt keine "ALTER TABLE..ALTER CONSTRAINT" -Syntax), vielmehr muss die Beschränkung fallen gelassen und dann neu erstellt werden. Ich habe ein Beispiel für Klarheit hinzugefügt. – onedaywhen

9

Hier ist die Art, wie ich die "Cascading löschen" -Funktion zu einem bestehenden Fremdschlüssel in SQL Server Management Studio hinzufügen würde.

Zuerst finden Sie Ihren Fremdschlüssel, und öffnen Sie es "DROP und CREATE To" in einem neuen Abfragefenster.

Drop and Create

Dann fügen Sie einfach "ON DELETE CASCADE" zum "ADD CONSTRAINT" Befehl:

On delete cascade

Dann drücken Sie einfach die Hit "Ausführen", um die Abfrage auszuführen.

Arbeit erledigt!

Verwandte Themen