mysql のトリガ
mysql のトリガ
tb1、tb2と2つのテーブルがあります。
tb1...mysql のトリガについて。
tb1、tb2と2つのテーブルがあります。
tb1のテーブルの情報が更新されたら 「1」というフィールドの数字の合計をtb2の「sum1」というようにフィールドに書き込みたいのです。
tb1は、id(int) ,syubetsu(text),1(int),2(int)3(int),4(int),5(int) tb2は、id(int) ,syubetsu(text),sum1(int),sum2(int),sum3(int),sum4(int),sum5(int) です。
※1,tb1の1~5のフィールドにはいろいろな数字が入ってる。
tb1の更新をきっかけに、tb2にそれぞれの合計を書き込むには、どのように記述すればいいのでしょうか?
※2、syubetu のフィールドには、A B C D E の5文字が入っています。
その文字ごとにグループ化して、合計を書き込むにはどのように記述すればいいのか?
以上2つの質問ですが、よろしく御願いします。
tb1の更新とは update のみです。
レコードはあらかじめ登録されており、その内容が変更されるだけです。
その変更時に、tb1全体のそれぞれのフィールドの合計 と A~Eのグループごとの合計をtb2に書き込みたいのです。
tb2はあらかじめレコードを登録しております。
※ やりたいことは、全体の合計と、グループごとの合計を取得したいということです。
取りあえず、「やりたいこと」をトリガで別表に反映するのでなく、検索結果として得られるselect文を提示しておきます。
列名は、「1」などの数字でなく、「num1」といった英字で始まる名称に置き換えています。
select syubetsu,sum(num1),sum(num2) from tb1
group by syubetsu with rollup
=====回答=====
MySQLのバージョン
トリガで実装するには、あまり向いていないテーブル設計と感じますが、トリガを使う目的は何なのでしょうか?
>tb1のテーブルの情報が更新されたら
更新とは?
insert、update、deleteが、すべてあり得るのですか?
>※2、syubetu のフィールドには、A B C D E の5文字が入っています。
その文字ごとにグループ化して、合計を書き込むには
>どのように記述すればいいのでしょうか?
tb2は、行数が5個しかないというこ
group byとsum関数の組み合わで、実装できる
。