如何在 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 访问新记录数据并设置适当的值。