Удалить строки SQL с FK в другой таблице - PullRequest
0 голосов
/ 19 сентября 2018

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

В таблице 1 (отдел) есть следующие столбцы:

ID   | NAME | SCHOOL | ACTIVE | SNAPSHOT
860  | SOF  |  20    |   1    | NULL
861  | CS   |  20    |   1    | NULL

ID - это PK, int, NOT NULL

Таблица 2 (Пользователь) имеет следующие столбцы:

ID   | EMPNO | FORENAME | SURNAME | DEPT
1495 | e3456 | Parker   | Sal     |  860

Dept is FK

Проблема:

Два отдела в таблице 1 должныобновиться до одного отдела, как показано ниже:

ID   | NAME                | SCHOOL | ACTIVE | SNAPSHOT
860  | School of Sciences  |  20    |   1    | NULL

Я использую следующую команду sql:

DELETE FROM Department WHERE ID = 861

И получаю следующую ошибку:

Сообщение 547, уровень 16, состояние 0, строка 10 Оператор DELETE конфликтует с ограничением REFERENCE "FK__User__Dept".Конфликт произошел в базе данных "uniDB", таблице "dbo.User", столбце "Dept".

При использовании той же команды я не могу удалить идентификатор Dept 861 из таблицы 2 (Пользователь), поскольку третья таблица имеет ограничение FK Пользователь и, следовательно, я получаю ту же ошибку, что и выше.

Заранее спасибо за помощь

1 Ответ

0 голосов
/ 19 сентября 2018

Изменить ссылки, затем удалить:

UPDATE u SET
  Dept = 860
FROM User u
WHERE u.Dept = 861

DELETE d
FROM Department d
WHERE d.ID = 861
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...