Masz tutaj dwie prawdziwe opcje, możesz wyłączyć ograniczenia w tabeli. Zwykle nie jest to świetny pomysł, ponieważ możesz skończyć z złym stanem danych, jeśli zadzierasz z danymi odnoszącymi się do innych tabel, ale nie znasz pełnego zakresu schematu i może to odpowiadać Twoim celom:
ALTER TABLE [workdemo.no].[dbo].[M06Persons] NOCHECK CONSTRAINT [FK_M02ArticlePersons_M06Persons]
Pamiętaj, aby ponownie włączyć ograniczenie po usunięciu za pomocą
ALTER TABLE [workdemo.no].[dbo].[M06Persons] WITH CHECK CHECK CONSTRAINT [FK_M02ArticlePersons_M06Persons]
Drugim wyborem byłoby usunięcie i ponowne dodanie ograniczenia z opcją ON DELETE CASCADE przy użyciu:
ALTER TABLE [workdemo.no].[dbo].[M06Persons] DROP CONSTRAINT [FK_M02ArticlePersons_M06Persons]
ALTER TABLE [workdemo.no].[dbo].[M06Persons] WITH NOCHECK ADD CONSTRAINT [FK_M02ArticlePersons_M06Persons] FOREIGN KEY(M06PersonId)
REFERENCES <parent table here> (<parent column here>)
ON DELETE CASCADE
Na podstawie nazwy FK wygląda na to, że twoja tabela nadrzędna to M02ArticlePersons, a kolumna nadrzędna to M06Persons.
Jeśli nie jesteś autorem tego schematu, spróbuj zastanowić się, dlaczego ograniczenia mogą występować, i zrozum, że naruszenie ich w ten sposób może mieć niezamierzone skutki uboczne.
Jest też inna opcja ręczna:
Możesz przejść do tabeli potomnej i usunąć wiersze potomne, do których odwołuje się klucz nadrzędny. Następnie możesz usunąć wiersz nadrzędny. Zasadniczo to robi usuwanie kaskadowe. W ten sposób nie musisz upuszczać / odtwarzać / zmieniać ograniczeń.
źródło
Ten mały kod pomoże każdej tabeli, z której chcesz usunąć rekordy. Dba również o integralność referencyjną ...
Poniższy kod wygeneruje instrukcje DELETE. Podaj po prostu schema.table_Name
źródło