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 回答