我遇到了外键约束的一些困难。我有三张桌子:
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约束时在Subscriptionfeatures中插入以下记录,如下所示
ALTER TABLE subscriptionfeatures ADD CONSTRAINT FK_feature FOREIGN KEY (feature_id) REFERENCES features(id);
Subscriptionfeatures
x 1 1 => ok
但是在向FK约束添加ON DELETE CASCADE子句时我无法插入相同的记录,但我必须管理我不明白其拒绝的原因!
ALTER TABLE subscriptionfeatures ADD CONSTRAINT FK_feature FOREIGN KEY (feature_id) REFERENCES features(id) ON DELETE CASCADE;
Subscriptionfeatures
x 1 1 => fails
对此的任何帮助将不胜感激!
答案 0 :(得分:1)
这对我有用:
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
给出的错误是什么?