尝试在数据库中解决它,而不是在应用层通过使用ON UPDATE CASCADE
和ON DELETE CASCADE
在子表的定义中解决。
MySQL 站点的一个稍微修改的示例:
CREATE TABLE parent (id INT NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE child (id INT, parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=INNODB;
在此处查看文档:http: //dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
编辑:对于您的多对多关系,您可以使用以下内容:
CREATE TABLE parent_child_link (
parent_id INT NOT NULL,
child_id INT NOT NULL,
PRIMARY KEY(parent_id, child_id),
FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (child_id) REFERENCES child(id)
ON DELETE CASCADE ON UPDATE CASCADE
);
希望这可以帮助。