2011-09-12 100 views
-3

有谁知道如何添加外键与“ON DELETE CASCADE”类型“InnoDB的”表外键与“ON DELETE CASCADE”

+0

你有什么如此远? –

+1

您是否检查过[文档](http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html)? –

+0

我对MyISAM执行了此查询“ALTER TABLE tbl_businessalbum ADD CONSTRAINT fk_1 FOREIGN KEY(businessId)REFERENCES tbl_business(id)ON DELETE CASCADE”。查询成功执行bt MyISAM引擎不处理外键DELETE CASCADE属性http://dev.mysql.com/doc/refman/5.0/en/ansi-diff-foreign-keys.html。 –

回答

1

首先,要确保两个表是InnoDB的。即使create语句表示InnoDB,如果未安装此引擎,MySQL也会使用MyISAM。所以检查他们是否真的是InnoDB。

接下来,确保两列的类型完全相同(例如,如果其中一个是int(11),另一个是int(11)无符号的,则不能创建外键)。确保你引用的列(在你的案例中的bussiness表中的id)有唯一索引(MySQL允许使用任何索引列,但最好使用唯一索引)。如果它是主键,则它已具有唯一的索引。

接下来,运行该语句,根据文档和其他用户指出:

ALTER TABLE yourtable ADD FOREIGN KEY xyzkey (field) REFERENCES foreigntable (foreignfield) ON DELETE CASCADE;

如果您不能添加外键,你可以create trigger instead