我在外键限制方面遇到了一些困难。我有三桌:
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查询中没有设置。感谢你的帮助!