2

次のMySQLInnoDBテーブルがあります...

TABLE foldersA (
 ID
 title
)

TABLE foldersB (
 ID
 title
)

TABLE records (
 ID
 folderID
 folderType
 title
)

テーブル「records」のfolderIDは、folderTypeの値に応じて、「foldersA」または「foldersB」のいずれかのIDを指すことができます。(0または1)。

不思議なんだけど:

folderAまたはfolderBのいずれかの行が削除されたときに、テーブルレコードの適切な行が自動的に削除されるように、CASCADEルールを作成する方法はありますか?

または、この状況では、テーブル「レコード」の行をプログラムで削除する必要がありますか?

助けてくれてありがとう!

4

1 に答える 1

0

通常、

AタイプのものとBタイプのものがある場合は、「folders」のテーブルを作成してから、「foldersA」と「foldersB」を作成して、各タイプに固有のデータを保持する必要があります。次に、「フォルダ」を指すように、「レコード」から外部キー制約を作成できます。「foldersA」および「folders」(ID)を指す「foldersB」にCASCADE DELETE制約を設定した場合、親レコードを削除すると、適切な子テーブルの追加レコードが削除されます。

他の代替手段は、「foldersA」と「foldersB」の両方でTRIGGERを使用して、子行の「レコード」をチェックし、それらを削除することです。

于 2010-06-12T22:12:48.837 に答える