将函数绑定到 MySQL 中的列
Posted
技术标签:
【中文标题】将函数绑定到 MySQL 中的列【英文标题】:Binding a function to a column in MySQL 【发布时间】:2013-09-11 11:05:12 【问题描述】:我想将 mysql 函数 (UDF) 绑定到表中的列,该列将作为函数的别名并返回其值。
一个伪代码示例可能比文字更能说明这一点。
TABLE example (
...
col_x => int,
col_y => int,
col_sum => function() return SUM(col_x + col_y
);
我想做的是:
SELECT col_sum FROM example WHERE...;
col_x = 3
和 col_y = 5
应该使 SELECT col_sum
返回 8 的行。
我知道在查询本身中执行此操作非常简单,但在这种情况下,我试图在不重写大量现有代码的情况下修复项目中的错误。
我目前使用的是 MySQL 5.5。
(我尝试用 google 搜索这个,但到目前为止,我只得到了关于在查询中使用 UDF 的结果,这没有帮助。)
【问题讨论】:
你不能按照你想要的方式来做(读取列时计算的值),但是你可以使用触发器来计算插入行时的值。 【参考方案1】:你可以使用视图吗?
create view v_table as
select (colx + coly) as colsum, t.*
from "table" t;
一种可能性是实际上将原始表重命名为_table
,然后使用原始表名创建一个视图:
rename table "table" to "_table";
create view "table" as
select (colx + coly) as colsum, t.*
from "_table" t;
【讨论】:
我当然可以使用视图,现在我觉得很愚蠢。 :P 我显然太专注于 function 关键字而无法使用我的大脑。谢谢。【参考方案2】:添加列和触发器以在插入/更新时填充列。
【讨论】:
以上是关于将函数绑定到 MySQL 中的列的主要内容,如果未能解决你的问题,请参考以下文章