MySQL中的外键约束

时间:2014-04-25 09:46:27

标签: php mysql phpmyadmin

我是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 

为什么不能使用此表设置任何外键约束?

我已经对谷歌进行了一些研究,但我找不到外键约束无法实现的原因。请帮忙

2 个答案:

答案 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如果可能的话。