2010-09-03 19 views
1

MySQL中的mysql的級聯規則,我有以下幾點:如何指定以下

TABLE docs (
    ID 
    title 
    content 
) 

TABLE specialDocs (
    docID -> docs(ID) 
    userID -> users(ID) 
) 

所以specialDocs是可以屬於用戶文檔的子集。

我在想:是否可以指定級聯規則,以便刪除用戶時,屬於該用戶的文檔會自動刪除? (我認識到,如果指向用戶(ID)的指針是表格「docs」中的一列,那麼執行此操作會很簡單。但是我不清楚是否可以使用類似上面的連接表...)

在此先感謝您的幫助

回答

1

我不會這麼做 - 您的specialdocs表是多對多表,因此多個用戶可能與同一文檔相關。你想要什麼,如果不先刪除其他引用,級聯刪除將不會執行。如果您沒有參照完整性(IE:MyISAM表格),那麼您將在specialdocs中將文檔中的記錄孤立爲不再存在的文檔。

級聯刪除是一個引用完整性功能,所以它不能用於MyISAM表 - 你必須使用觸發器。鑑於需要檢查參考依賴關係,我會使用Innodb表的觸發器以及首先擺脫相關的specialdocs記錄...