3

子テーブルで親テーブルの外部キー参照を作成しています。参照が子テーブルにある親テーブルから行を削除しようとすると、驚くべきことにそれを削除できます。私は削除制限を書いて子テーブルを明示的に作成しようとしましたが、それもありませんでした。なぜこれが起こっているのですか?以下は、テーブルの作成中に使用しているコードです。

CREATE TABLE region
(
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(50) NOT NULL
);

CREATE TABLE aggregator
(
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(50) NOT NULL
);

CREATE TABLE gateway
(
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(50) NOT NULL,
region_id int ,
aggregator_id int ,
is_public boolean  DEFAULT 0 NOT NULL,
FOREIGN KEY (region_id) REFERENCES region(id),
FOREIGN KEY (aggregator_id) REFERENCES aggregator(id)
);
4

2 に答える 2

7

親テーブルと子テーブルの両方が INNODB テーブルである必要があります。

試す:

CREATE TABLE region
(
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(50) NOT NULL
) ENGINE=INNODB;

CREATE TABLE aggregator
(
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(50) NOT NULL
) ENGINE=INNODB;

CREATE TABLE gateway
(
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(50) NOT NULL,
region_id int ,
aggregator_id int ,
is_public boolean  DEFAULT 0 NOT NULL,
FOREIGN KEY (region_id) REFERENCES region(id),
FOREIGN KEY (aggregator_id) REFERENCES aggregator(id)
) ENGINE=INNODB;
于 2012-07-10T04:10:15.563 に答える
0

親テーブルと子テーブルを削除すると自動的に削除されるということですか?はいの場合は、カスケード ルールを一度実行します。

于 2012-07-10T04:11:20.503 に答える