SQL Server Delete - внешний ключ - PullRequest
1 голос
/ 14 мая 2010

У меня есть две таблицы в SQL Server 2005:

  • Таблица USER: информация о пользователе и т. Д.
  • Таблица СТРАН: Содержит список целых стран мира.
  • USER_COUNTRY Таблица: какие совпадения, какой пользователь посетил какой округ. Это держит, UserID и CountryID.

Например, таблица USER_COUNTRY выглядит следующим образом:

+----+--------+-----------+
| ID | UserID | CountryID |
+----+--------+-----------+
|  1 |      1 |        34 |
|  2 |      1 |         5 |
|  3 |      2 |        17 |
|  4 |      2 |        12 |
|  5 |      2 |        21 |
|  6 |      3 |        19 |
+----+--------+-----------+

Мой вопрос таков: : Когда пользователь удаляется в таблице USER, как я могу сделать удаление записей в таблице USER_COUNTRY напрямую. Может быть, с помощью внешнего ключа Containt?

Ответы [ 3 ]

1 голос
/ 14 мая 2010

Вы должны определить внешний ключ в USER_COUNTRY, который указывает на USER.UserID, и установить каскадное удаление:

CREATE TABLE USER_COUNTRY (
    ...
    CONSTRAINT USER_COUNTRY_FK1 FOREIGN KEY (UserID)
        REFERENCES USER(UserID)
        ON DELETE CASCADE
);
0 голосов
/ 14 мая 2010

Полагаю, CASCADE - ваш единственный выбор. Но вы действительно хотите жестко удалять подобные записи? Контекст: я изверг в данных.

0 голосов
/ 14 мая 2010

Да, вы можете установить отношение удаления внешнего ключа в Cascade.

...