2011-06-28 8 views
0

3つのテーブルが関連付けられています。カテゴリは...以下に簡略化され、複数テーブルのMySQLアップデート...トリガ?カスケード?

group 
----- 
id 
name 
active 

option 
------ 
id 
group_id 
name 
active 

user_option 
----------- 
id 
opton_id 
value 
active 

をユーザーがための値で入力したオプションが含まれている私の質問は、グループが非アクティブ化される状況を処理するための最良の方法は何かということです。私が過去に行ったことは、group_id =非アクティブ化されているグループIDのオプションIDの参照です。それから私は、私がグループを更新し、その後、私はオプションを更新返されたIDのリストを取るなどuser_optionを無効に...

set active=0 where option_id in (list of ids) 

トリガーやカスケードでこのようなことを行う方法がある場合は、私は興味があります。私はMySQLでこれまで使ったことがないし、この問題に対する最善のアプローチが何であるかを考えてみた。

答えて

0

USER_OPTION.active列の外部キーにON UPDATE CASCADEを追加すると、目的の機能を実装するために必要なものはすべてper the documentationです。

ALTER TABLE 
MODIFY active FOREIGN KEY fk_name (active) REFERENCES OPTION(active) ON UPDATE CASCADE 
+0

もし、MyISAMのFKeysがサポートされていない場合は、次のようにしてください。ルックアップ/アップデートのトリガーオプションがあるのでしょうか、これは基本的に "古い"方法と同じですか?ありがとう。 – Don

+0

@Don:読んだところはわかりませんが、InnoDBのテーブルと見なしたのは、同じ機能のためにトリガーを使わなければならないからです。 –

+0

ありがとうございます。テーブルは現在ISAMですが、選択/挿入の負荷を評価して、柔軟性を高めるためにそれらを変換するのが適切かどうかを確認しています。 – Don

関連する問題