ограничения внешнего ключа mysql

0

Я установил целостность внешнего ключа в таблице. Но я могу удалить данные из главной таблицы, которая является ссылкой в ​​дочерней таблице. Какая проблема На самом деле он должен сказать, что ошибка при удалении, как и все указанные таблицы, должна быть удалена.

  • 2
    Какой механизм хранения вы используете? «Для механизмов хранения, отличных от InnoDB, MySQL Server анализирует синтаксис FOREIGN KEY в инструкциях CREATE TABLE, но не использует и не сохраняет его». (Справочное руководство по MySQL по адресу dev.mysql.com/doc/refman/5.1/en/ansi-diff-foreign-keys.html )
  • 0
    Двигатель Сторге - ДВИГАТЕЛЬ = MyISAM
Теги:

2 ответа

1
Лучший ответ

Вы указали ВКЛ. УДАЛИТЬ КАСКАД? когда вы создали свой FK? Не знаете, какой двигатель вы используете либо

Пример

CREATE TABLE parent (id INT NOT NULL,
                     PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE child (id INT, parent_id INT,
                    INDEX par_ind (parent_id),
                    FOREIGN KEY (parent_id) REFERENCES parent(id)
                      ON DELETE CASCADE
) ENGINE=INNODB;

Подробнее здесь http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

  • 0
    Обе таблицы должны быть таблицами InnoDB, а производительность innodb меньше, чем у myisam
  • 0
    На самом деле я создал таблицу просто и у меня есть данные сейчас. Вы имели в виду, что мне нужно воссоздать всю таблицу для настройки внешнего ключа.
Показать ещё 2 комментария
1

mysql не делает этого для вас,

вам нужно объявить триггер при действии удаления

перед примером триггера удаления:

http://www.java2s.com/Code/Oracle/Trigger/Createabeforedeletetrigger.htm

Ещё вопросы

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