1
我需要一些幫助來理解外鍵和級聯如何工作。我理解這個理論,但是我有麻煩把這些應用到現實世界的例子中。理解FOREIGN KEY/CASCADE約束的問題
假設我已經得到了下面的表格(及其他表的可參考表tags
任意數字):
CREATE TABLE tags (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) UNIQUE
) Engine=InnoDB;
CREATE TABLE news (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(63),
content TEXT,
INDEX (title)
) Engine=InnoDB;
所以我創建了一個進一步的表提供許多一對多關係news
和tags
之間:
CREATE TABLE news_tags (
news_id INT UNSIGNED,
tags_id INT UNSIGNED,
FOREIGN KEY (news_id) REFERENCES news (id) ON DELETE ...,
FOREIGN KEY (tags_id) REFERENCES tags (id) ON DELETE ...
) Engine=InnoDB;
我的要求,以級聯:
- 如果我刪除了一條消息,則應刪除
news_tags
中的所有對應條目。 - 同樣適用於表
x
,後面可能會加上x_tags
-table。 - 如果我刪除標籤,則應該刪除
news_tags
以及每個其他表x_tags
中的所有對應條目。
恐怕我可能不得不爲了這個目的重新訪問我的表結構,但這沒什麼問題,因爲我只是想弄清楚東西是如何工作的。
任何指向良好的教程,SQL查詢或JPA例子的鏈接表示讚賞!
正確[示例代碼](http://sscce.org/)(在這裏,SQL語句)比更爲有用任何臨時模式和樣本數據格式。請使用'CREATE TABLE'和'INSERT ... VALUES'作爲樣本。所需的結果不需要作爲示例代碼呈現,因爲結果是代碼的輸出,而不是代碼本身。 – outis 2012-01-13 09:16:18