2012-02-29 2 views
1

Каков правильный порядок, если мне нужно удалить столбец O_CLIENT?SQL удалить столбец с внешним ключом

  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) 
); 

ответ

4

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

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

1

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

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

1

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

+0

Много комментариев на ту же секунду :) –

Смежные вопросы