SQL удалить столбец с внешним ключом - PullRequest
1 голос
/ 01 марта 2012

В каком порядке я должен удалить столбец O_CLIENT?

  1. Удалить отношение; затем удалите столбец O_CLIENT
  2. Удалить столбец o_CLIENT
CREATE TABLE client (
C_ID int PRIMARY KEY AUTOINCREMENT,
....
);

CREATE TABLE order (
O_ID int PRIMARY KEY AUTOINCREMENT,
.......
O_CLIENT long FOREIGN KEY REFERENCES client(C_ID)
);

Ответы [ 3 ]

4 голосов
/ 01 марта 2012

Сначала вы должны удалить связь, иначе вы получите ошибку ограничения внешнего ключа.Это встроено, чтобы защитить вас от свисающих ссылок (т.е. вы удаляете клиента 1, но к клиенту 1 все еще привязаны 3 заказа). Если вы попытаетесь получить клиента из заказа, вы не получите ничего, что было бы недействительным.)

Вы также можете посмотреть каскадное удаление, чтобы при удалении верхнего уровня автоматически удалялись все отношения.Тогда вы можете просто выполнить одно удаление, которое очищает все

1 голос
/ 01 марта 2012

Если вы делаете это вручную, сначала нужно удалить отношение, а затем удалить столбец. Если вы делаете это с помощью инструмента (например, MySql Workbench), он позаботится об этом за вас.

1 голос
/ 01 марта 2012

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

Это также удалит ограничение внешнего ключа, определенное для этого столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...