0

私は親テーブルをAと言い、子はBと言い、BはAの主キーを参照しているので、ほとんどの人は親Aから削除するときにテーブルを変更するために削除カスケードを使用します.私の質問は: 「カスケード削除時」は必要ありませんか? 使えなくなるのはどんなとき?

4

2 に答える 2

1

製品は通常、カテゴリの「子」ではないため、Marc B の例は好きではありません。製品とカテゴリは、多対多の関係で重複できます。

親がなくてもデータがまだ有用な状況では、ON DELETE SET NULL があります。

例えば

translationsidtranslation_categoryfrom_text、を含むテーブルがあるとします。to_text

そのテーブルには、さまざまなテキストからテキストへの翻訳が含まれています。はtranslation_category、翻訳が主に使用される特定のフィールドを参照する外部キーです。ただし、異なる値に対して繰り返される可能性があるため、そのキーを無視して共通値from_textと値の数を取得するクエリを実行することもできます。to_texttranslation_category

translation_category親レコードの 1 つを削除したとしても、そのデータはおそらく有用です。そこで、ON DELETE SET NULL を使用します。

もちろん、同じスキーマを変更しtranslation_categoryて多対多のリンク テーブルに配置することもできますが、同じ原則が適用されます。

于 2012-11-17T04:18:59.873 に答える
0

テーブルのメンテナンス/リカバリ中に、DBA は削除カスケードを一時的にオフにすることがあります。これにより、たとえば、テーブルの外部のデータに損傷や影響を与えることなく、親テーブルを空にして再ロードできます。

于 2012-11-17T04:17:54.540 に答える