Mam 2 tabele: T1 i T2, są to tabele z danymi. Mamy relację jeden do wielu między T1 i T2. Jak zmienić definicje tabeli, aby wykonać kaskadowe usuwanie w programie SQL Server po usunięciu rekordu z T1, wszystkie powiązane rekordy w T2 również zostaną usunięte.
Między nimi istnieje obce ograniczenie. Nie chcę upuszczać tabel ani tworzyć wyzwalacza, aby usunąć T2. Na przykład, kiedy usuwam pracownika, wszystkie zapisy recenzji również powinny zniknąć.
T1 - pracownik,
Employee ID
Name
Status
T2 - Oceny wydajności,
Employee ID - 2009 Review
Employee ID - 2010 Review
sql-server
cascading-deletes
Bichvan Nguyen
źródło
źródło
Aby dodać „Kaskadowe usuwanie” do istniejącego klucza obcego w SQL Server Management Studio:
Najpierw wybierz swój klucz obcy i otwórz „DROP and Create To ..” w nowym oknie zapytania.
Następnie po prostu dodaj
ON DELETE CASCADE
doADD CONSTRAINT
polecenia:I naciśnij przycisk „Wykonaj”, aby uruchomić to zapytanie.
Nawiasem mówiąc, aby uzyskać listę swoich kluczy obcych i zobaczyć, które z nich mają włączoną funkcję „Usuń kaskadę”, możesz uruchomić ten skrypt:
A jeśli kiedykolwiek okaże się, że nie możesz
DROP
określonej tabeli z powodu ograniczenia klucza obcego, ale nie możesz ustalić, który FK powoduje problem, możesz uruchomić to polecenie:SQL w tym artykule zawiera listę wszystkich FK, które odwołują się do określonej tabeli.
Mam nadzieję, że to wszystko pomoże.
Przepraszam za długi palec. Chciałem tylko coś powiedzieć.
źródło
Możesz to zrobić za pomocą SQL Server Management Studio.
→ Kliknij prawym przyciskiem myszy projekt tabeli i przejdź do Relacje i wybierz klucz obcy w panelu po lewej stronie, aw panelu po prawej stronie rozwiń menu „WSTAWIANIE i AKTUALIZACJA” i wybierz „Kaskada” jako regułę usuwania.
źródło
Użyj czegoś takiego
Wpisz poprawne nazwy kolumn i powinieneś być ustawiony. Jak poprawnie zaznaczono mark_s, jeśli masz już ograniczenie klucza obcego, być może najpierw musisz usunąć stary, a następnie utworzyć nowy.
źródło
Najpierw włącz właściwość ONCascade:
1. Zlikwiduj istniejące ograniczenie klucza obcego
2. dodaj nowy z włączonym ustawieniem ON DELETE CASCADE
Dawny:
Second To Disable ONCascade właściwość:
1. Zlikwiduj istniejące ograniczenie klucza obcego
2. Dodaj nowy z włączonym ustawieniem WŁĄCZ USUŃ BEZ AKCJI
Dawny:
źródło
ON DELETE CASCADE
Określa, że dane podrzędne są usuwane po usunięciu danych nadrzędnych.
Dla tego klucza obcego określiliśmy
ON DELETE CASCADE
klauzulę, która nakazuje SQL Serverowi usunięcie odpowiednich rekordów w tabeli potomnej, gdy dane w tabeli nadrzędnej zostaną usunięte. Zatem w tym przykładzie, jeśli wartość id_produktu zostanie usunięta z tabeli produktów, odpowiednie rekordy w tabeli inwentarza, które używają tego identyfikatora produktu, również zostaną usunięte.źródło
Jeśli relacja jeden do wielu jest z T1 do T2, to nie reprezentuje funkcji i dlatego nie może być użyta do dedukcji lub wnioskowania o funkcji odwrotnej, która gwarantuje, że wynikowa wartość T2 nie pomija krotek T1 łączących T2, które są dedukcyjnie ważne , ponieważ nie ma ważnej dedukcyjnie funkcji odwrotnej. (reprezentowanie funkcji było celem kluczy podstawowych.) Odpowiedź w myśleniu SQL brzmi: tak, możesz to zrobić. Odpowiedź w myśleniu relacyjnym brzmi: nie, nie możesz tego zrobić. Zobacz punkty niejednoznaczności w Codd 1970. Relacja musiałaby być wiele do jednego od T1 do T2.
źródło
Myślę, że nie można po prostu usunąć właściwości tabel, a jeśli są to rzeczywiste dane produkcyjne, wystarczy usunąć zawartość, która nie wpływa na schemat tabeli.
źródło