So löschen Sie alle abhängigen Zeilen
Ich habe eine Tabelle Eine die primary key-Spalte eine und es ist forigen Schlüssel zu B Tabelle(Tabelle B hat einen primären Schlüssel b und der Spalte a).Tabelle B hat auch einen Primärschlüssel-b, die forigen Taste C Tabelle und so weiter.
Nun, wenn ich zum löschen einer Zeile aus der Tabelle Ein, dann wird es nicht erlauben Sie mir, weil seine abhängigen Tabelle B und Tabelle B ist abhängig von Tabelle C. Also ich habe zum löschen einer Zeile aus, zunächst C, dann B und zuletzt Eine manuell
Also kann jemand bitte mir sagen, ob es irgendeinen Weg gibt, zu löschen, direkt ohne Umweg, um jede Tabelle, und überprüfen, ob es irgendwelche Abhängigkeiten hat oder nicht und dann löschen
cascade delete
?stackoverflow.com/questions/6260688/...
Ich weiß bis Tabelle c verknüpft ist und ich weiß nicht, was andere Tabellen verknüpft sind mit c und so weiter
Check meine Antwort. Ich habe ein Skript zu identifizieren, Abhängigkeiten
möglich, Duplikat der gewusst Wie: löschen von Zeilen in Tabellen mit foreign keys auf andere Tabellen
InformationsquelleAutor SpringLearner | 2015-02-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Verwenden Cascade
Cascading Referential Integrity Constraints
Update:
aktivieren Sie die Einschränkungen der Referenziellen Integrität der Tabelle A (PK) aus der Tabelle B, wo-ID ist Ein Fremdschlüssel und ähnlich der PK der Tabelle B Tabelle C Where ID von B ist Fremdschlüssel
MSDN LIBRARY
"CODE-PROJEKT ARTICALE
Sehr Schöner Artikel BLOG.SQL-AUTORITÄT
Ich aktualisiert meine Antwort und fügte Momentaufnahme, kann es helfen, Sie ein bisschen mehr
InformationsquelleAutor Khurram Ali
Wenn Sie sind nicht erlaubt zu ändern, die Tabellen, können Sie einen Blick auf die
EXISTS
Betreiber.Es wird zulassen, die Sie zum löschen von Zeilen aus einer Tabelle nur, wenn sich die Abfrage innerhalb der
EXISTS
Gegenzug, die mindestens 1 Ergebnis. Sie können es verwenden, um zu überprüfen, Abhängigkeiten.Schreiben Sie 3 Abfragen:
Wird das erste kümmern Datensatz in
C
verweist Datensätze inB
verweist Datensätze inA
, die Sie löschen möchten.Dann können Sie entfernen von Datensätzen aus
B
da es keine weitere Abhängigkeiten, die inC
.Schließlich sind Sie in der Lage, zu löschen von Datensätzen aus
A
mit der gleichen Logik.InformationsquelleAutor DeadlyJesus
Den Begriff, den Sie suchen, ist 'cascade' - Sie müssen löschweitergaben. Können Sie Sie aktivieren, wie hier erklärt: Wie verwende ich die cascade löschen mit SQL Server?
Danke für den link,+1
InformationsquelleAutor zmbq
Könnten Sie mithilfe der referenziellen Integrität finden Sie in diesem Frage. Aber Vorsicht, zu viel cascading RI und Sie können eine Menge Schaden, ohne es zu merken!
InformationsquelleAutor Rhys Jones
Die automatische Löschungen hängt davon ab, wie Sie definiert die Beziehungen zwischen den Tabellen.
Wenn Sie eine Fehlermeldung erhalten, wenn Sie versuchen, eine Zeile zu löschen, die in einer master-Tabelle, das ist, weil Sie nicht angegeben haben, eine Besondere Aktion, die in den Beziehungen für die Löschung.
Was ich meine, ist die Veränderung der
ON DELETE
undON UPDATE
Optionen in den FK. Dies ermöglicht das festlegen, was passiert mit dem Kind Zeilen beim löschen oder aktualisieren der Zeile in der Haupttabelle. Zum Beispiel, dieON DELETE CASCADE
option würde genau das tun, was Sie wollen.Beispiel:
machen würde, dass, wenn Sie löschen oder ändern einer Zeile in der Haupt-Tabelle, wird die Zeile auch gelöscht oder geändert für die untergeordnete Tabelle.
Relevanten docs:
Erstellen Fremdschlüssel-Beziehungen
Einschränkungen Der Referenziellen Integrität
ON UPDATE CASCADE bedeutet, dass, wenn Sie ändern Sie den Schlüssel in der übergeordneten Zeile, die Schlüssel werden automatisch auf die zugehörigen Kinder von Zeilen, entsprechend der neuen übergeordneten Schlüssel
InformationsquelleAutor JotaBe
Als andere haben bereits darauf hingewiesen,
cascade delete
ist, was Sie suchen. In einem der Kommentare, Sie haben erwähnt, dass Sie nicht wissen, die Abhängigkeiten. Hier ist ein Skript, das eine Liste der AbhängigkeitenÄndern Sie die
WHERE
- Klausel zum filtern vonreferenced_entity_name
Ich Tat wie diese, in DENEN referenced_entity_name = 'A' ,aber es hat mir nicht alle Spalten
Es wird Ihnen nur die Referenzierung und referenzierten Tabellen. Nicht Spalten
Ich meine es zeigt nichts an
InformationsquelleAutor Raj