Как удалить все связанные записи? - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь удалить пользователя и все связанные с ним записи, и я понятия не имею, как использовать оператор SQL INNER JOIN, есть ли способ сделать что-то в стиле:

DELETE * FROM tblUsers, tblEnrollment, tblLinkActivities, tblFullSchedule, tblSchedule, tblLinkMedical
WHERE [IDUser] = ?

(я знаю, что это совершенно неправильно)

Моя диаграмма отношений выглядит так:

Relationships

Было бы прощеиспользовать 6 команд удаления?Или есть другая команда, которая делает это?Спасибо большое ..

Ответы [ 2 ]

1 голос
/ 04 апреля 2019

Поскольку вы уже определили отношения со ссылочной целостностью, просто установите параметр Каскадное удаление связанных записей для каждого отношения.

См. https://support.office.com/en-us/article/create-edit-or-delete-a-relationship-dfa453a7-0b6d-4c34-a128-fdebc7e686af#__bmcascade

Таким образом, вам нужно только удалить из tblUsers, все связанные записи удаляются автоматически.

Если вы не можете или не хотите этого делать, вам нужно выполнить отдельные запросы на удаление связанных таблиц перед удалением основной записи.

0 голосов
/ 04 апреля 2019

Невозможно удалить записи в нескольких таблицах одновременно в одном SQL-запросе. Вам нужно написать несколько операторов удаления. Лучший способ - написать внутренний запрос со всеми задействованными таблицами и удалить их в каждой таблице. Например: удалить из отдела, где DEPTNO IN (выберите a.DEPTNO из emp a, dept b, где a.DEPTNO = b.DEPTNO и a.DEPTNO = 10) удалить из emp, где DEPTNO IN (выберите a.DEPTNO из emp a, dept b, где a.DEPTNO = b.DEPTNO

...