Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在MySQL中创建一个以表达式作为默认值的列?_Mysql_Sql - Fatal编程技术网

是否可以在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

如何在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 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 ;
我会使用:

…因为几乎不需要为易于计算的值专用存储空间。否则,使用函数或只需将表达式写入所需的任何查询/存储过程

真正取决于:

  • 您需要访问此数据的频率
  • 获得所需结果的操作有多复杂
我建议从不存储值开始。如果性能出现问题,那么为存储值指定一列——而不是之前。在这一点上,当您可以使用(psuedocode)时,触发器对我来说有点过头了:

我会使用:

…因为几乎不需要为易于计算的值专用存储空间。否则,使用函数或只需将表达式写入所需的任何查询/存储过程

真正取决于:

  • 您需要访问此数据的频率
  • 获得所需结果的操作有多复杂
我建议从不存储值开始。如果性能出现问题,那么为存储值指定一列——而不是之前。在这一点上,当您可以使用(psuedocode)时,触发器对我来说有点过头了:


谢谢你的例子。试一试now@NagHammadi例如我下次更新了我的答案。我已经验证过了,而且很有效。谢谢你的例子。试一试now@NagHammadi例如我下次更新了我的答案。我验证了它,它工作了。如果我“为值存储指定一列”,是否使用juergen d的方法?@NagHammadi:是的,触发器是确保逻辑应用于与表交互的所有对象的好方法。如果我“为值存储指定一列”,是否使用juergen d的方法?@NagHammadi:是的,触发器是确保逻辑应用于与表交互的所有对象的一种好方法。
INSERT INTO employee 
  (...employeemonthly, employeeyearly, ...)
VALUES
  (...@employeemonthly, @employeemonthly * 12, ...