mysql - 以默认 MySQL 值执行计算

标签 mysql database

有没有一种方法可以使用 MySQL 的默认值属性(即列定义上的 DEFAULT 子句)根据相同或不同表中某些其他列的值执行计算?

我们可以为任何列设置静态默认值,但我们可以执行计算或查询其他表的数据吗??

编辑

假设一个表的列为 marks,其他列为 total_marks,第三列为 percentage。如何设置从前两列计算的百分比的默认值

最佳答案

没有。 DEFAULT 子句的值必须是常量。 (此规则的一个异常(exception)是使用 CURRENT_TIMESTAMP 作为 TIMESTAMP 列的默认值。)

作为替代方案,您可以使用 TRIGGER 在插入或更新行时为列设置值。

例如,在 BEFORE INSERT FOR EACH ROW 触发器中,您可以根据为其他列提供的值执行计算和/或从其他表查询数据。


编辑

对于问题编辑中给出的示例,触发器定义的示例起点:

CREATE TRIGGER mytable_bi 
BEFORE INSERT ON mytable 
FOR EACH ROW
BEGIN
  SET NEW.percentage = (100.0 * NEW.marks) / NULLIF(NEW.total_marks,0);
END

关于mysql - 以默认 MySQL 值执行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12163263/

相关文章:

mysql - 无法使用 @rodrigogs/mysql-events Zongji 事件监听器更改 Node 客户端的 serverId

mysql - 删除重复项

mysql - 在 MySQL 中设置最终一致性(延迟提交)

mysql - 求和查询中的一列

mysql - MySQL表在MongoDB中的正确实现?

Mysql Connector Net 6.0.4 设置 - 无法打开 XML 文件?

php - 更新sql不影响数据库

mysql - 版本化每个字段与历史日期字段?

java - 如何将phpmyadmin数据库与android应用程序连接

php - 在 MYSQL 中使用 like 语句而不考虑顺序