Здесь у вас есть два реальных выбора, вы можете отключить ограничения для таблицы. Обычно это не очень хорошая идея, так как вы можете столкнуться с плохим состоянием данных, если вы связываетесь с данными, относящимися к другим таблицам, но не знаете всей области вашей схемы и это может соответствовать вашим целям:
ALTER TABLE [workdemo.no].[dbo].[M06Persons] NOCHECK CONSTRAINT [FK_M02ArticlePersons_M06Persons]
Не забудьте снова включить ограничение после удаления с
ALTER TABLE [workdemo.no].[dbo].[M06Persons] WITH CHECK CHECK CONSTRAINT [FK_M02ArticlePersons_M06Persons]
Второй вариант - удалить и повторно добавить ограничение с помощью опции ON DELETE CASCADE, используя:
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
Исходя из вашего имени FK, похоже, что ваша родительская таблица - M02ArticlePersons, а родительский столбец - M06Persons.
Если вы не создали эту схему, пожалуйста, постарайтесь понять, почему могут присутствовать ограничения, и понять, что их нарушение таким образом может иметь непреднамеренные побочные эффекты.
Также есть еще один ручной вариант:
Вы можете перейти к дочерней таблице и удалить дочерние строки, на которые ссылается родительский ключ. Затем вы можете удалить родительский ряд. По сути, это то, что делает каскадное удаление. Таким образом, вам не нужно удалять / пересоздавать / изменять свои ограничения.
источник
Этот небольшой код поможет для любой таблицы, из которой вы хотите удалить записи. Он также заботится о ссылочной целостности ...
Ниже код будет генерировать операторы DELETE. Просто укажите schema.table_Name
источник