有没有办法使用DEFAULT
MySQL 的默认值属性(即列定义的子句)基于相同或不同表中某些其他列的值执行计算?
我们可以为任何列设置静态默认值,但是我们可以执行计算或查询其他表的数据吗?
编辑
让我们说一个表格,其中包含列marks
和其他total_marks
第三列percentage
.如何设置percentage
要从前两列计算的默认值
不可以.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)
归档时间: |
|
查看次数: |
3543 次 |
最近记录: |