これをMySQLでどのように実装しますか:
CREATE TABLE employee (
employeemonthly DECIMAL(10,2),
employeeyearly DECIMAL(10,2) DEFAULT employeemonthly*12
);
そのために挿入トリガーを使用します。このようなもの
DELIMITER |
CREATE TRIGGER default_yearly BEFORE INSERT ON employee
FOR EACH ROW BEGIN
SET NEW.employeeyearly = NEW.employeemonthly * 12;
END;
|
DELIMITER ;
ビューを使用します:
CREATE VIEW vemployees AS
SELECT e.employeemonthly,
e.employeemonthly * 12 AS employeeyearly
FROM EMPLOYEE e
...簡単に計算できる値のために専用のストレージ スペースを確保する必要がほとんどないからです。それ以外の場合は、関数を使用するか、必要なクエリ/ストアド プロシージャに式を記述します。
本当に依存するのは次のとおりです。
値を保存しないことから始めることをお勧めします。パフォーマンスが問題になる場合は、列を値の格納専用にします。前ではありません。その場合、(疑似コード)を使用できる場合、トリガーは私にとって少しやり過ぎです:
INSERT INTO employee
(...employeemonthly, employeeyearly, ...)
VALUES
(...@employeemonthly, @employeemonthly * 12, ...
挿入イベントのトリガーを使用し、NEWを使用して新しいレコードデータにアクセスし、適切な値を設定します。