1

mysqlには、次のものがあります。

TABLE docs (
    ID
    title
    content
)

TABLE specialDocs (
    docID -> docs(ID)
    userID -> users(ID)
)

したがって、specialDocs は、ユーザーに属することができるドキュメントのサブセットです。

ユーザーが削除されたときに、そのユーザーに属するドキュメントが自動的に削除されるように、カスケード ルールを指定することはできますか? (ユーザーへのポインタ(ID)がテーブル「docs」内の列である場合、これを行うのは簡単だと思います。ただし、上記のような結合テーブルで可能かどうかは不明です...)

よろしくお願いいたします。

4

1 に答える 1

1

あなたのspecialdocsテーブルは多対多のテーブルであるため、複数のユーザーが同じドキュメントに関連している可能性があります。あなたが望むものは、最初に他の参照を削除せずに許可されるべきではありません-カスケード削除では実行されません。また、参照整合性 (IE: MyISAM テーブル) がない場合は、specialdocs存在しないドキュメントに孤立したレコードが存在することになります。

Cascade on delete は参照整合性機能であるため、MyISAM テーブルでは使用できません。そのためにはトリガーを使用する必要があります。参照依存関係をチェックする必要があるため、Innodb テーブルのトリガーも使用して、関連するspecialdocsレコードを最初に削除します...

于 2010-09-03T02:38:43.243 に答える