2009-07-14 32 views
1

に関連レコードを削除する:私は2つの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

あなたのコメントテーブルにはフィールドPostIDがあり、これはコメントが属する投稿を指定します。

1

強制可能な外部キーがなくても、削除を実行する方法は同じです。あなた本当には、MyISAMテーブルで失う何があなたのコメントテーブルにpost_idのような列を持っている

DELETE FROM Comments 
WHERE post_id = [Whatever Id]; 

DELETE FROM Posts 
WHERE PostID = [Whatever Id]; 

と仮定すると、トランザクション内でこれらの2つのクエリを実行する機能です。

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

(あなたは> = 5.0を使用している場合)、それが動作するはずです、私はそれを試したことがありませんが、あなたは削除をカスケード行うためのトリガーを設定することができます。良いアイデア。 –

関連する問題