我是PHP的新手。我已经将下面的代码片段作为家庭作业:
CREATE TABLE `admin_log` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`statusdate` DATETIME DEFAULT NULL,
`type` INT(11) DEFAULT NULL
PRIMARY KEY (`id`)
) ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin
为什么不能使用此表设置任何外键约束?
我已经对谷歌进行了一些研究,但我找不到外键约束无法实现的原因。请帮忙
答案 0 :(得分:1)
你可以这样做:
CREATE TABLE `admin_log` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`statusdate` DATETIME DEFAULT NULL,
`type` INT(11) DEFAULT NULL,
INDEX (type),
FOREIGN KEY (type)
REFERENCES type(id)
ON UPDATE CASCADE ON DELETE RESTRICT,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=latin
请注意 MYISAM 的引擎 INNODB insetad,它不允许外键。
或者在"结构中使用MySQLAdmin"选项卡,单击"关系视图"表格描述下面的链接。
答案 1 :(得分:1)
即使之前已在评论中提及 - 只是为了使其更加突出:MyISAM不支持外键。因此,您需要将表格的引擎更改为例如INNODB如果可能的话。