最近、InnoDBで外部キーと削除カスケードの驚異を発見しました。これは、迷惑メールを残すことを心配することなく、複雑なデータ構造を簡単に削除するのに役立ちます。私は現在、次のように(あなたがウェブショップ上でなければなりませんように)製品データベースの画像を保存してい関連する画像ファイルの削除に対するデータベースレコードのカスケード削除
:
私products
の表は、あなたが期待するものです、それはid
主要列があります。 私のproduct_images
テーブルには、products.id
カラムへの外部キーを持つproduct_id
カラムと、イメージファイル名を格納するタイプvarcharのimage
カラムがあります。
ファイル名は、画像のSHA1ハッシュを計算し、ハッシュの最初の2文字の後に名前が付けられたフォルダに保存します。 61/6153A6FA0E4880D9B8D0BE4720F78E895265D0A9.jpg
。データベースには、6153A6FA0E4880D9B8D0BE4720F78E895265D0A9.jpg
のみが格納されます。
データベースから製品を削除する場合、カスケードDELETEルールはproduct_images
テーブルのレコードを削除しますが、ファイルは自分のサーバーに残します。
product_images
テーブル内のレコードが削除されるたびに、イメージファイルの削除を自動化する方法はありますか?具体的に、またはカスケードしてください。削除操作に何らかのトリガーやルーチンがリンクされている可能性がありますか?
は、私はこのような機能は、MySQLに存在しないと思うことができます解除伴うが、解決する方法を聞くのが大好きですこの問題 – akuzminsky
これは、私が 'CASCADE'(またはそのような場合は「FOREIGN KEY」)を使用しないで、アプリケーション内のすべての作業を行うもう一つの理由です。 –