如何在MySQL中实现这一点:
CREATE TABLE employee (
employeemonthly DECIMAL(10,2),
employeeyearly DECIMAL(10,2) DEFAULT employeemonthly*12
);
答案 0 :(得分:4)
使用插入触发器。像这样的东西
DELIMITER |
CREATE TRIGGER default_yearly BEFORE INSERT ON employee
FOR EACH ROW BEGIN
SET NEW.employeeyearly = NEW.employeemonthly * 12;
END;
|
DELIMITER ;
答案 1 :(得分:3)
我会使用view:
CREATE VIEW vemployees AS
SELECT e.employeemonthly,
e.employeemonthly * 12 AS employeeyearly
FROM EMPLOYEE e
...因为很少需要将存储空间用于容易计算的值。否则,使用函数或简单地将表达式写入您需要的任何查询/存储过程。
真正取决于:
我建议从不存储值开始。如果性能成为问题,那么为值存储专用一列 - 而不是之前。那时,当你可以使用(伪代码)时,触发器对我来说有点矫枉过正:
INSERT INTO employee
(...employeemonthly, employeeyearly, ...)
VALUES
(...@employeemonthly, @employeemonthly * 12, ...
答案 2 :(得分:2)
使用trigger for the insert event,使用NEW访问新记录数据并设置适当的值。