私は2種類のドキュメントを持っています。 1つはフォルダ単位で整理されています。もう1つはクライアントによって編成されています。1対1テーブルの対応する行が削除されたときに、テーブル内の行を自動的に削除する方法はありますか?
Table docs
ID
title
Table folderDocs
docID -> docs(ID)
folderID -> folders(ID) ON DELETE CASCADE
Table clientDocs
docID -> docs(ID)
clientID -> clients(ID) ON DELETE CASCADE
私は、フォルダまたはクライアントが削除されたときに自動的にドキュメントを削除するエレガントな方法を探しています:ここではMySQLでのテーブル構造、です。上記のカスケード規則はこれを達成しません。 (つまり、folderDocsの行は削除されますが、ドキュメントの対応する行は残っています)。
これを設定するには、カスケードルールやその他の方法を使用してmysqlで設定する必要があります。 clientDocsはカスケードによって削除され、docsの対応する行も削除されますか? (私はプログラムで最初に文書を削除してから、フォルダ/クライアントを削除する必要がないようにしたいと考えています)
ありがとうございました。
下のクエリを使用して、フォルダとクライアントを持たないすべての文書はこれがばかな質問かもしれませんが、あなたは、 'docID'があなたのテーブルの外部キーとして設定されていますか?あなたが望んでいるのは正確に 'ON DELETE CASCADE'と同じように聞こえるからですが、外部キーがセットされていなければ動作しません。 –
なぜDELETEトリガーを使用しないのですか? – Roger
@Rogier - 削除がカスケードである場合、DELETEトリガーは機能しません。私はこれについて間違っている場合は私を修正してください。 – user1031947