(编辑)
没有任何的参考像Spring或Hibernate的框架,你可以简单地设置了约束的数据库表的外键列,以删除所有相关记录时, “用户”记录被删除。约束被称为ON DELETE CASCADE
,如果您在连接表的外键列上定义它,则RDBMS将自动删除外键与已删除记录的选定用户ID匹配的所有记录。
请尝试对ON DELETE CASCADE
约束专门针对您正在使用的数据库服务器进行一些研究,以获取更多详细信息。
(编辑#2) 下面是从一个MySQL documentation改性例如:
CREATE TABLE product (
category INT NOT NULL, id INT NOT NULL,
price DECIMAL,
PRIMARY KEY(category, id)
) ENGINE=INNODB;
CREATE TABLE customer (
id INT NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE product_order (
no INT NOT NULL AUTO_INCREMENT,
product_category INT NOT NULL,
product_id INT NOT NULL,
customer_id INT NOT NULL,
PRIMARY KEY(no),
INDEX (product_category, product_id),
INDEX (customer_id),
FOREIGN KEY (product_category, product_id)
REFERENCES product(category, id)
ON DELETE CASCADE,
FOREIGN KEY (customer_id)
REFERENCES customer(id)
) ENGINE=INNODB;
的例子显示product
和product_order
之间的关系。从product
表中删除记录时(只是简单地运行DELETE FROM product WHERE id=... and category=...
),product_order
表中的所有引用记录都将自动删除,而不会有任何其他SQL语句。 另一方面,从customer
表中删除一行时,您将得到与现在相同的错误,因为默认约束会限制该情况下记录的删除操作。
你没有说你的实体关系东西。你是如何绘制它们的?什么是“级联”策略或其他东西? –