(編輯)
沒有任何的參考像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
表中刪除一行時,您將得到與現在相同的錯誤,因爲默認約束會限制該情況下記錄的刪除操作。
你沒有說你的實體關係東西。你是如何繪製它們的?什麼是「級聯」策略或其他東西? –