在默认MySQL值中执行计算

tGi*_*ani 1 mysql database

有没有办法使用DEFAULTMySQL 的默认值属性(即列定义的子句)基于相同或不同表中某些其他列的值执行计算?

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

编辑

让我们说一个表格,其中包含列marks和其他total_marks第三列percentage.如何设置percentage要从前两列计算的默认值

spe*_*593 8

不可以.DEFAULT子句的值必须是常量.(此规则的一个例外是使用列CURRENT_TIMESTAMP作为默认值TIMESTAMP.)

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

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


编辑

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

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
Run Code Online (Sandbox Code Playgroud)