Mysql外键约束不起作用

时间:2012-07-10 04:04:51

标签: mysql foreign-key-relationship

嗨,大家好我只是在子表中创建父表的外键引用。当我尝试从父表中删除其子表中引用的行时,令人惊讶的是它允许我删除它。我试图通过写删除限制来创建子表,也没有它但没有帮助。任何想法为什么会这样? .Below是我在创建表格时使用的代码。

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)
);

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

是否意味着如果删除父表而子表删除自动?如果是,那么一旦通过级联规则。