Vous avez ici deux choix réels, vous pouvez désactiver les contraintes sur la table. Ce n'est généralement pas une bonne idée car vous pouvez vous retrouver avec une mauvaise condition de données si vous jouez avec des données qui se rapportent à d'autres tables, mais ne connaissez pas l'étendue complète de votre schéma et cela peut convenir à vos besoins:
ALTER TABLE [workdemo.no].[dbo].[M06Persons] NOCHECK CONSTRAINT [FK_M02ArticlePersons_M06Persons]
N'oubliez pas de réactiver la contrainte après la suppression avec
ALTER TABLE [workdemo.no].[dbo].[M06Persons] WITH CHECK CHECK CONSTRAINT [FK_M02ArticlePersons_M06Persons]
Le deuxième choix serait de supprimer et de rajouter la contrainte avec l'option ON DELETE CASCADE en utilisant:
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
En fonction de votre nom FK, il semble que votre table parent soit M02ArticlePersons et que la colonne parent soit M06Persons.
Si vous n'avez pas créé ce schéma, essayez de déterminer pourquoi les contraintes peuvent être présentes et comprenez que les violer de cette manière peut avoir des effets secondaires involontaires.
Il existe également une autre option manuelle:
Vous pouvez accéder à la table enfant et supprimer les lignes enfant référencées par la clé parent. Ensuite, vous pouvez supprimer la ligne parent. C'est essentiellement ce que fait la suppression en cascade. De cette façon, vous n'avez pas à supprimer / recréer / modifier vos contraintes.
la source
Ce petit code vous aidera pour toute table dont vous souhaitez supprimer les enregistrements. Il prend également en charge l'intégrité référentielle ...
Le code ci-dessous générera des instructions DELETE. Spécifiez simplement le nom du schéma.
la source