Lefteris Gkinis Ответов: 2

Удаление записи в таблице SQL с помощью внешнего ключа


У меня есть две таблицы в моем SQL-сервере.
Один из них-ApplicationUser, а другой-UserApprovals.
Эти две таблицы связаны с внешним ключом из UserApprooval.Идентификатор пользователя для ApplicationUser.идентификатор пользователя.
Теперь мне нужно удалить запись; и я начинаю делать это из ApplicationUser, я не знаю, правильно ли это, потому что trow ошибка:
[ The DELETE statement conflicted with the REFERENCE constraint  FK_UserApprovals_ApplicationUser   The conflict occurred in database  ekkerossDB  table  dbo UserApprovals  column UserID 
The statement has been terminated  ]\r\n UpdateApplicationRejectedUser


Что я уже пробовал:

Я думаю, что правильно удалить сначала UserApprovals, а затем ApplicationUser (если это необходимо.
Может ли кто - нибудь помочь мне в этом??

2 Ответов

Рейтинг:
17

CHill60

Да, вы должны удалить все, что относится к ApplicationUser во-первых, любая строка, имеющая внешний ключ, должна быть удалена до того, как строка с этим первичным ключом будет удалена... если ссылочная целостность[^] включен.

Вы можете заставить SQL делать большую часть работы за вас, используя Каскадное Удаление[^]

И не забудьте документацию MSDN Создание Связей Внешних Ключей | Microsoft Docs[^]


Lefteris Gkinis

Большое спасибо. Ваш ответ был идеальным
Удаление должно начинаться с нижнего уровня до верхнего уровня

CHill60

Рад был помочь

Рейтинг:
1

RickZeeland

Если вы не можете заставить его работать нормально, вы можете использовать это в качестве последнего средства:

-- Disable Constraints at DB level
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
GO
DELETE FROM ApplicationUser
GO
-- Enable Constraints at DB level
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
GO
Приведенный пример предназначен для использования в среде SQL Server Management Studio.