日期:2014-05-16  浏览次数:20782 次

mysql 设置级联删除

以下方法来自网络:

?

CREATE TABLE person_fileinfo (
person_id int not null,
fileinfo_id int NOT NULL ,
primary key(person_id,fileinfo_id),
FOREIGN KEY(fileinfo_id) REFERENCES fileinfo(id) ON DELETE CASCADE,
FOREIGN KEY(person_id) REFERENCES person(id) ON DELETE CASCADE
)

注意加入ON DELETE CASCADE

?

?

在mysql中实现这样的级联是很麻烦你,但可以实现的。根据我的思想提供两种解决方式。
1.因为mysql中要实现级联删除,创建的表必须满足:
a、必须使用InnoDB引擎;
b、外键必须建立索引(INDEX);
??? 外键绑定关系这里使用了“ ON DELETE CASCADE”,意思是如果外键对应数据被删除,将关联数据完全删除,更多信息请参考MySQL手册中关于InnoDB的文档

如果数据库表已经做好了,用这种方式就得回去改变表的属性,很烦。

第二种方式:
不需要改变表的结构:
在程序中去实现,如果你根据条件删除了A表中的数据库,在写一个方法,在去B表中删除A中的相关数据,这样也算实现了级联,不过只是通过程序实现的。数据删除使用的时间可以忽略的。

?

?