У меня возникают некоторые трудности с ограничениями внешнего ключа. У меня есть три таблицы:Таблица отображения Mysql Ограничения FK
Features
ID PK AUTO_INC
Title VARCHAR
Subscriptions
ID PK AUTO_INC
Title VARCHAR
Subscriptionfeatures
ID PK AUTO_INC
feature_id INT (index)
subscription_id INT (index)
Когда у меня есть следующие записи
Features
1 Testfeature
Subscriptions
1 Testsubscription
я могу вставить следующую запись в Subscriptionfeatures при определении ограничения FK следующим
ALTER TABLE subscriptionfeatures ADD CONSTRAINT FK_feature FOREIGN KEY (feature_id) REFERENCES features(id);
Subscriptionfeatures
x 1 1 => ok
Но я могу не вставляйте идентичную запись при добавлении предложения ON DELETE CASCADE к ограничению FK, но я должен признаться, что не понимаю его причины для отказа!
ALTER TABLE subscriptionfeatures ADD CONSTRAINT FK_feature FOREIGN KEY (feature_id) REFERENCES features(id) ON DELETE CASCADE;
Subscriptionfeatures
x 1 1 => fails
Любая помощь в этом была бы принята с благодарностью!
Если вы заглянете в мой запрос, вы увидите, что я сначала добавил значения, а затем создал ограничение. Это означает, что данные действительно существуют. Не могли бы вы опубликовать всю последовательность команд, которая не удалась, и точное описание ошибки? – Quassnoi
Я упустил это. Я провел еще несколько испытаний. В конце концов кажется, что это моя собственная глупая ошибка! Я тестировал с помощью Emma, чтобы вставить записи и не нажимал enter после вставки последнего идентификатора в новую строку, поэтому при отправке значения не было задано в sql-запросе. Цените свою помощь! – 2009-10-04 11:57:45