Anda memiliki dua pilihan nyata di sini, Anda dapat menonaktifkan batasan di atas meja. Ini biasanya bukan ide yang bagus karena Anda bisa berakhir dengan kondisi data yang buruk jika Anda mengacaukan data yang terkait dengan tabel lain, tetapi tidak tahu sepenuhnya skema Anda dan mungkin sesuai dengan tujuan Anda:
ALTER TABLE [workdemo.no].[dbo].[M06Persons] NOCHECK CONSTRAINT [FK_M02ArticlePersons_M06Persons]
Ingatlah untuk mengaktifkan kembali kendala setelah penghapusan dengan
ALTER TABLE [workdemo.no].[dbo].[M06Persons] WITH CHECK CHECK CONSTRAINT [FK_M02ArticlePersons_M06Persons]
Pilihan kedua adalah dengan menjatuhkan dan menambahkan kembali kendala dengan opsi ON DELETE CASCADE menggunakan:
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
Berdasarkan nama FK Anda, sepertinya tabel induk Anda adalah M02ArticlePersons dan kolom induknya adalah M06Persons.
Jika Anda tidak membuat skema ini, cobalah untuk mempertimbangkan mengapa kendala mungkin ada, dan pahami bahwa melanggarnya dengan cara ini mungkin memiliki efek samping yang tidak diinginkan.
Ada opsi manual lain juga:
Anda bisa pergi ke tabel anak dan menghapus baris anak yang dirujuk oleh kunci induk. Kemudian Anda dapat menghapus baris induk. Ini pada dasarnya adalah apa yang dilakukan oleh penghapusan kaskade. Dengan cara ini, Anda tidak perlu menjatuhkan / membuat ulang / mengubah batasan Anda.
sumber
Kode kecil ini akan membantu untuk setiap tabel yang ingin Anda hapus catatannya. Itu merawat integritas referensial juga ...
Kode di bawah ini akan menghasilkan pernyataan DELETE .. Cukup tentukan schema.table_Name
sumber