В настоящее время я работаю с базой данных, которая состоит из таблицы пользователей, таблицы разрешений, набора таблиц, связанных с документами, и нескольких разных таблиц, которые имеют зависимости внешнего ключа от строк в пользовательской таблице.
Я пытаюсь удалить все записи пользователей из таблицы «Пользователи», которые соответствуют следующим критериям:
- Нет ссылки на запись в одной из таблиц документов.
- Нет ссылки на запись в таблице разрешений.
- Содержит нулевое значение в столбце «Идентификатор клиента» строки «Пользователь».
Я могу создать запрос для всех пользователей, который выглядит следующим образом:
SELECT id
INTO MyTableVar
FROM Users
WHERE
(NOT EXISTS (SELECT Author_Id FROM ItemInstances_DocumentInstance
WHERE Users.Id = ItemInstances_DocumentInstance.Author_Id)
AND NOT EXISTS (SELECT CompletedBy_Id FROM TaskInstanceUser
WHERE Users.Id = TaskInstanceUser.CompletedBy_Id)
AND Cust_Id IS NULL
AND Id > 4)
SELECT *
FROM MyTableVar
Этот запрос получает все идентификаторы пользователей, которых я хочу удалить, но я получаю сообщение об ошибке при попытке удалить эти записи
Оператор DELETE конфликтует с ограничением REFERENCE "FK_MessageUser_User.
Я озадачен тем, как мне использовать идентификаторы, которые я запрашивал, для удаления записей в таблице MessageUser_User
, которые соответствуют пользователям, которых я хочу удалить. Я чувствую, что это должно быть легко, но я не могу найти способ сделать это с помощью синтаксиса SQL.
PS: Я также был бы благодарен за отзыв о том, что я написал для своего запроса. Я хотел бы знать, что я мог сделать, чтобы сделать это чище. Я новичок в SQL и мне нужна вся помощь, которую я могу получить.