2009-07-14 129 views
1

我有兩個MySQL(MyISAM數據)表:在MySQL中刪除相關記錄

Posts: PostID(primary key), post_text, post_date, etc. 

Comments: CommentID(primary key), comment_text, comment_date, etc. 

我想刪除在「評論」的所有評論屬於特定職位,表的時候相應的後記錄被刪除來自「帖子」表。

我知道這可以通過使用InnoDB級聯刪除(通過設置外鍵)來實現。但是我怎樣才能在MyISAM中使用PHP呢?

回答

2
DELETE 
    Posts, 
    Comments 
FROM Posts 
INNER JOIN Comments ON 
    Posts.PostID = Comments.PostID 
WHERE Posts.PostID = $post_id; 

假設您的評論表有一個字段PostID,它指定了評論所屬的帖子。

1

即使沒有可執行的外鍵,刪除的方法仍然是相同的。假設你在你的評論表

DELETE FROM Comments 
WHERE post_id = [Whatever Id]; 

DELETE FROM Posts 
WHERE PostID = [Whatever Id]; 

有像post_id列什麼你真的失去用的MyISAM是一個事務中執行這兩個查詢的能力。

0

我從來沒有嘗試過,但你可以設置一個觸發做級聯刪除(如果你使用的是> = 5.0)

DELIMITER $$ 
CREATE TRIGGER Posts_AD AFTER DELETE ON Posts 
FOR EACH ROW 
BEGIN 
    DELETE FROM Comments WHERE post_id = OLD.PostID; 
END $$ 
DELIMITER ; 
+0

它應該工作。好主意。 – 2009-07-14 15:46:05