将函数绑定到 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 = 3col_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 中的列的主要内容,如果未能解决你的问题,请参考以下文章

如何将函数绑定到kv文件中的按钮

将函数绑定到kivy中的按钮

如何将回车键绑定到 tkinter 中的函数?

将 Kivy 列表项中的 on_release 绑定到函数

将静态方法/函数绑定到 XAML 中的 Func<T> 属性

将临时右值绑定到 std::vector 构造函数中的引用左值