2011-11-16 4 views
0

私はテーブルを更新トリガーを作成しようとしている、とここでいくつかの擬似コードです:SQL複数依存関係の更新を有効にすると、何が最も効率的ですか?

IF db.table1.column5 = 1 
    {UPDATE db.table5.column5 = 1;} 
ELSE IF 
db.table2.column5 = 1 
    {UPDATE db.table5.column5 = 1;} 
ELSE IF 
db.table3.column5 = 1 
    {UPDATE db.table5.column5 = 1;} 
ELSE IF 
db.table4.column5 = 1 
    {UPDATE db.table5.column5 = 1;} 

それを行うための最も効率的な方法だろうか?たとえば、私はトリガーの束を作るだけですか、または上記のようにORキーワードまたはELSE IFを使用する必要がありますか?誰かがコードがどのように形成されているかを私に見せてもらえますか?これは初めてのことです。

読んでいただきありがとうございます。

+0

@Flimzyああ...申し訳ありません。私が仕事をしてから6日ほど経ちました。それが正しいように私はそれを更新しました。彼らは単にジェネリックであると考えられています。 –

+0

さて、この 'db.table1'オブジェクトはdb.table1の行であるはずですか? – Flimzy

答えて

1

あなたの要件を理解していれば、column5がtable1からtable4まで更新されると、table5の対応する行も同様に更新する必要がありますか?

これには、table1〜table4のそれぞれに1つずつ、複数のトリガーを使用することをお勧めします。

+0

あなたはそれを正しく理解したと思います。ちょうど明確にするために、それはxorか特別な何かではありません。表1-4のいずれかが '0 /" false "から" 1/true "へのcolumn5の変更を持っている場合は、table5.column5をtrueに設定する必要があります。基本的には大人のフィルタです。コンテンツのいずれかがアダルトコンテンツである場合、ノード全体はアダルトコンテンツである。 –

+0

もう一つのオプション(私が知らない多くの実装の詳細によりますが、これは良くても悪いことでしょう)は、table5.column5が存在しないことになります。その代わりに、他の4つのテーブルを照会するビューSELECT。 – Flimzy

+0

コードを表示できますか?これは私が持っているものです: 'CREATE TRIGGER adultそれぞれの行のtable1に挿入する前に BEGIN UPDATE table5 SET column5 = table1.column5 WHERE table5.id = table1.id; END; ' –

関連する問題