У меня есть база данных с несколькими таблицами. В «главной» таблице, называемой contacts
, хранится информация о контактах, каждый из которых имеет id
, имя и т. Д. *
У меня также есть 20 других таблиц, каждая из которых представляет определенную функцию, например staff
, media
...
Каждая из этих таблиц функций ссылается на таблицу контактов с внешним ключом. Недавно я добавил это ограничение для всех таблиц с помощью следующего запроса для таблицы staff
:
ALTER TABLE staff ADD contactsConstraint FOREIGN KEY (c_id) REFERENCES contacts(id) ON UPDATE CASCADE ON DELETE CASCADE
.
Если я изменю строку в контактах, я также хочу, чтобы это изменение появилось в таблице персонала - и наоборот. Но ограничение, похоже, не имеет значения!
Единственное, что он делает - выдает ошибку, если я пытаюсь добавить строку в staff
, где значение c_id
отсутствует в таблице contacts
.
Что я сделал не так? Следует отметить, что я недавно изменил движок базы данных на InnoDB, чтобы быть уверенным, что мои ограничения будут работать.
Я также пытался удалить ON DELETE CASCADE
, поэтому только обновления таблицы будут действовать в обеих таблицах, но также безрезультатно.