我在外键限制方面遇到了一些困难。我有三桌:

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

在定义FK约束时,我可以在订阅特性中插入以下记录

ALTER TABLE subscriptionfeatures ADD CONSTRAINT FK_feature FOREIGN KEY (feature_id) REFERENCES features(id);
Subscriptionfeatures
    x    1    1 => ok

但是在给FK约束添加删除级联子句时,我不能插入相同的记录,但是我必须补充我不明白它拒绝的原因!

ALTER TABLE subscriptionfeatures ADD CONSTRAINT FK_feature FOREIGN KEY (feature_id) REFERENCES features(id) ON DELETE CASCADE;
Subscriptionfeatures
    x    1    1 => fails

在这方面如有任何帮助将不胜感激!


对我来说很有效:

CREATE TABLE Features (
        id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        Title VARCHAR(100)
        ) Engine=InnoDB;
CREATE TABLE Subsriptions (
        id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        Title VARCHAR(100)
        ) Engine=InnoDB;

CREATE TABLE Subscriptionfeatures (
        id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        feature_id INT NOT NULL,
        subscription_id INT NOT NULL,
        KEY ix_subscriptionfeatures_feature (feature_id),
        KEY ix_subscriptionfeatures_subscription (subscription_id)
        )  Engine=InnoDB;
INSERT
INTO    Features
VALUES  (1, 'Testfeature');
INSERT
INTO    Subsriptions
VALUES  (1, 'Testsubscription');

ALTER TABLE subscriptionfeatures ADD CONSTRAINT FK_feature FOREIGN KEY (feature_id) REFERENCES features(id) ON DELETE CASCADE;

INSERT
INTO    Subscriptionfeatures (feature_id, subscription_id)
VALUES  (1, 1);

是什么错误MySQL 礼物?


如果您查看我的查询,您会发现我首先添加了值,然后创建了约束。这意味着数据确实存在。请发布失败的整个命令序列和准确的错误描述好吗?

我没注意到。我做了进一步的测试。最终这似乎是我自己的愚蠢错误!我正在测试使用艾玛来插入记录,并且在将最后一个ID插入新的行后没有按入,所以在提交这个值时,在SQL查询中没有设置。感谢你的帮助!