2

これをMySQLでどのように実装しますか:

CREATE TABLE employee (
  employeemonthly DECIMAL(10,2), 
  employeeyearly DECIMAL(10,2) DEFAULT employeemonthly*12
);
4

3 に答える 3

4

そのために挿入トリガーを使用します。このようなもの

DELIMITER |

CREATE TRIGGER default_yearly BEFORE INSERT ON employee
  FOR EACH ROW BEGIN   
    SET NEW.employeeyearly = NEW.employeemonthly * 12;
  END;
|

DELIMITER ;
于 2012-06-02T14:54:03.470 に答える
3

ビューを使用します:

CREATE VIEW vemployees AS
  SELECT e.employeemonthly,
         e.employeemonthly * 12 AS employeeyearly
    FROM EMPLOYEE e

...簡単に計算できる値のために専用のストレージ スペースを確保する必要がほとんどないからです。それ以外の場合は、関数を使用するか、必要なクエリ/ストアド プロシージャに式を記述します。

本当に依存するのは次のとおりです。

  • このデータにアクセスする必要がある頻度
  • 必要な結果を得るための操作の複雑さ

値を保存しないことから始めることをお勧めします。パフォーマンスが問題になる場合は、列を値の格納専用にします。前ではありません。その場合、(疑似コード)を使用できる場合、トリガーは私にとって少しやり過ぎです:

INSERT INTO employee 
  (...employeemonthly, employeeyearly, ...)
VALUES
  (...@employeemonthly, @employeemonthly * 12, ...
于 2012-06-02T14:59:08.173 に答える
2

挿入イベントのトリガーを使用し、NEWを使用して新しいレコードデータにアクセスし、適切な値を設定します。

于 2012-06-02T14:52:25.733 に答える