Как я могу удалить дубликаты внешнего ключа из нескольких таблиц?

0

Я пишу запрос, который находит повторяющиеся результаты в одной таблице таблицы A на основе внешнего ключа из таблицы X. Таблица A Первичный ключ затем является внешним ключом для 3 других таблиц, Таблица B + Таблица C + Таблица D

Есть ли способ написать один скрипт для удаления первой (верхней) строки из трех таблиц (таблицы BCD), которые используют FK, а затем таблицу A (через FK таблицы X).

Надеюсь, это имеет смысл, это очень сложно объяснить!

Таблица A


Primary Key                                   Foreign Key                   IsActive

a64c3cae-8474-4c4e-8108-14898b8b5319    3b7c82d9-bbbe-4504-9dfd-e01614d12ff6    1

Таблица B


Primary Key                                       Foreign Key               IsActive
998852b4-6d2a-47e0-b9c3-497548b8b5c6    a64c3cae-8474-4c4e-8108-14898b8b5319    1

Таблица C


Primary Key                                 Foreign Key                     IsActive
0966f8e6-4c29-4e5a-8b59-5ac413557392    a64c3cae-8474-4c4e-8108-14898b8b5319    1

Таблица D


Primary Key                                     Foreign Key                 IsActive
f8c30ff5-498f-4e34-90c5-814bc5cf46ef    a64c3cae-8474-4c4e-8108-14898b8b5319    1

Таблица X


Primary Key                             Name    InTables
3b7c82d9-bbbe-4504-9dfd-e01614d12ff6    Bob         4

Спасибо, Сэм

  • 0
    Пример данных, таких как 'abc', намного проще, чем '3b7c82d9-bbbe-4504-9dfd-e01614d12ff6'.
  • 0
    Отметил, спасибо за совет.
Теги:

1 ответ

0

Вы можете выполнить его в одном запросе следующим образом:

DELETE A, B, C, D
FROM TableA A
LEFT JOIN TableX X ON X.PK = A.FK
INNER JOIN TableB B ON B.FK = A.PK 
INNER JOIN TableC C ON C.FK = A.PK
INNER JOIN TableD D ON D.FK = A.PK;

Однако это не очень хорошая практика, поскольку вы можете использовать внешний ключ CONSTRAINT ON DELETE CASCADE для повышения эффективности. Он просто связывает внешний ключ с связанным первичным ключом, если вы удалите связанный первичный ключ, любой связанный внешний ключ также будет удален.

Просмотрите эту запись, чтобы узнать больше

  • 0
    Спасибо за чаевые. Я думаю, что это может работать!
  • 0
    спасибо, но получаю Msg 102, Level 15, State 1, Line 1 Incorrect syntax near ',' .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню