有没有一种方法可以使用 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/