1

重複の可能性:
別のテーブルの列が更新されたときに、あるテーブルの列を更新するトリガーを作成する

これらの値を持つデータベース テーブルを取得しました

UpVotes | DownVotes | PercentVotes
8       | 2         | 80
10      | 0         | 100
5       | 5         | 50
560     | 34        | 94

mysql データベースを次のように動作させることは可能ですか?

UpVotes | DownVotes | PercentVotes
8       | 2         | (UpVotes/(UpVotes + DownVotes)) x 100 = 80
10      | 0         | (UpVotes/(UpVotes + DownVotes)) x 100 = 100
5       | 5         | (UpVotes/(UpVotes + DownVotes)) x 100 = 50
560     | 34        | (UpVotes/(UpVotes + DownVotes)) x 100 = 94

スクリプトを介して更新することなく自動的に?Excel の場合と同様に、UpVotes 値または DownVotes 値を変更すると、PercentVotes 値は、投票総数に応じて、賛成票の新しい正しいパーセントに自動的に変わります。

私の悪い英語で申し訳ありませんが、あなたが私の主張を理解してくれることを願っています. :)

4

5 に答える 5

7

そのためにa を使用できますtrigger。このようなもの:

delimiter |
CREATE TRIGGER calc_percentages BEFORE INSERT on your_table
FOR EACH ROW
BEGIN
    SET NEW.PercentVotes = NEW.UpVotes/(NEW.UpVotes + NEW.DownVotes);
END
|
delimiter ;

すべての挿入で実行され、計算された値が追加されます。の後に更新する場合は、の代わりにupdate別のトリガーを追加します。after updatebefore insert

パーセンテージ情報は計算された値であるため、オンザフライで選択して計算でき、DBには保存しません。ただし、パフォーマンスの向上が本当に必要な場合は、トリガーを使用して保存します。

于 2012-11-16T16:15:59.720 に答える
0

トリガーを使用している場合は、次のようなことを試してください

delimiter |

CREATE TRIGGER insertPercentVotes AFTER INSERT ON YourTableName

// calculate percentage here
      // Execute Update query here  
 END;
|
于 2012-11-16T16:24:26.837 に答える
0

選択時にこのようなものを実行したいでしょうが、数学をチェックする必要があるかもしれません.

select UpVotes, DownVotes ((UpVotes / (UpVotes + DownVotes)) * 100) as PercentVotes from my_table;
于 2012-11-16T16:21:22.117 に答える
0

はい、可能です。トリガーを使用できます。更新と挿入でトリガーを設定するだけで、列の値が変更されます。

于 2012-11-16T16:21:40.080 に答える
0
delimiter //
CREATE TRIGGER ins_votepercent BEFORE INSERT ON votetable FOR EACH ROW 
  SET NEW.PercentVotes = (NEW.UpVotes/(NEW.UpVotes+NEW.DownVotes)) * 100  
  END;//

CREATE TRIGGER upd_votepercent BEFORE UPDATE ON votetable FOR EACH ROW 
  SET NEW.PercentVotes = (NEW.UpVotes/(NEW.UpVotes+NEW.DownVotes)) * 100 
  END;//

MySQL マニュアルを参照してください

于 2012-11-16T16:26:10.677 に答える