是否可以在MySQL中创建一个以表达式作为默认值的列?
如何在MySQL中实现这一点:是否可以在MySQL中创建一个以表达式作为默认值的列?,mysql,sql,Mysql,Sql,如何在MySQL中实现这一点: CREATE TABLE employee ( employeemonthly DECIMAL(10,2), employeeyearly DECIMAL(10,2) DEFAULT employeemonthly*12 ); 使用a,使用new访问新记录数据并设置适当的值。使用a,使用new访问新记录数据并设置适当的值。为此使用插入触发器。像这样的 DELIMITER | CREATE TRIGGER default_yearly BEFORE I
CREATE TABLE employee (
employeemonthly DECIMAL(10,2),
employeeyearly DECIMAL(10,2) DEFAULT employeemonthly*12
);
使用a,使用new访问新记录数据并设置适当的值。使用a,使用new访问新记录数据并设置适当的值。为此使用插入触发器。像这样的
DELIMITER |
CREATE TRIGGER default_yearly BEFORE INSERT ON employee
FOR EACH ROW BEGIN
SET NEW.employeeyearly = NEW.employeemonthly * 12;
END;
|
DELIMITER ;
为此使用插入触发器。像这样的
DELIMITER |
CREATE TRIGGER default_yearly BEFORE INSERT ON employee
FOR EACH ROW BEGIN
SET NEW.employeeyearly = NEW.employeemonthly * 12;
END;
|
DELIMITER ;
我会使用:
…因为几乎不需要为易于计算的值专用存储空间。否则,使用函数或只需将表达式写入所需的任何查询/存储过程
真正取决于:
- 您需要访问此数据的频率
- 获得所需结果的操作有多复杂
- 您需要访问此数据的频率
- 获得所需结果的操作有多复杂
谢谢你的例子。试一试now@NagHammadi例如我下次更新了我的答案。我已经验证过了,而且很有效。谢谢你的例子。试一试now@NagHammadi例如我下次更新了我的答案。我验证了它,它工作了。如果我“为值存储指定一列”,是否使用juergen d的方法?@NagHammadi:是的,触发器是确保逻辑应用于与表交互的所有对象的好方法。如果我“为值存储指定一列”,是否使用juergen d的方法?@NagHammadi:是的,触发器是确保逻辑应用于与表交互的所有对象的一种好方法。
INSERT INTO employee
(...employeemonthly, employeeyearly, ...)
VALUES
(...@employeemonthly, @employeemonthly * 12, ...