0

mysql の 2 つのテーブル間に 1 対多の関係があります。

url のプライマリを持つタイプと呼ばれるもの

url
varchar(255)

そして、url にインデックスを付けてorderを呼び出しました。

url          | id_no
varchar(255) | int

orderテーブルには多くの値を含めることができ、すでに外部キーが設定されているためurl、テーブルurlで a が削除された場合、orderに一致するすべての関連キーが削除されます。

注文は手動で削除することもできます。つまり、テーブルorderと関係のないタイプurlが存在する可能性があります。

urlinタイプがテーブルの順序と関係がない場合、 typeからそれ自体を削除するように外部キーを設定する方法はありますか?

mysql のマニュアルを見ると、私はそれを理解できません。CASCADE関連するすべてのキーを削除すると言って混乱していますが、2 つの間に関係がない場合にのみurlテーブル型から a を削除したいですか?

ご協力いただきありがとうございます!

4

1 に答える 1

1

DELETEテーブルのトリガーを使用して簡単に実行できますorder。同じ URL を持つ他の行が存在するかどうかを確認し、存在しない場合は から削除しtypeます。

それを行う別の方法は、次のようなメンテナンス スクリプトを作成することです。

DELETE FROM `type` WHERE url NOT IN (
  SELECT DISTINCT `url` FROM `order`
)

定期的またはオンデマンドで実行できます。

于 2012-06-11T21:47:36.513 に答える