【问题标题】:MySQL callback - is there such a thing?MySQL回调 - 有这样的事情吗?
【发布时间】:2011-08-28 11:37:33
【问题描述】:

我想知道在 INSERT 或 UPDATE 之后是否有与使用 mysql 的回调函数等价的东西,它可以返回行号,也许还有这些行的值。

【问题讨论】:

标签: mysql callback


【解决方案1】:

您可以创建在插​​入和更新时调用的triggers。它们不返回值,但它们可以设置您可以在它们之外读取的变量。

【讨论】:

  • 谢谢!我通过 Google 搜索“MySQL 回调”来找到“触发器”一词,我相信很多其他人都这样做了。
【解决方案2】:

我不知道您所说的任何回调,但肯定可以从您的调用应用程序中检索最后插入的 ID,以防您未指定它并且数据库已生成自动增量值。其他值你应该已经知道了,因为你已经插入了它们。

如果你需要知道数据库服务器中的这些值,你可以有一个在每次插入时执行的 SQL 触发器,这样你就可以对新插入的记录进行更多处理,例如在另一个表中写一些东西等...

【讨论】:

【解决方案3】:

这在 MySQL 中是不可用的。我认为有两种方法可以实现:

  1. 您必须使用轮询来模拟它 - 一种相当丑陋的方法,在编程上很容易,但在服务器上却很难。

  2. 请参阅Does MySQL permit callbacks in C such that when a change happens, I can be notified? - 编写一个用户定义的函数,该函数可以使用您设计的某些专有方法通知注册的侦听器。对程序员更严格,对服务器更容易。在这种情况下,请确保您的 UDF 是健壮的,在将通知传递给可能已经死亡的侦听器时不会冻结,等等。
这将是一个方便的 MySQL 通用 UDF,并带来与 Firebird / Interbase 相比它一直缺乏的东西,他们称之为事件,不要与 MySQL 定时事件混淆。另一方面,MySQL 的定时事件功能是我上次查看 Firebird 和 Interbase 时所缺少的。

如果您(或后来的读者)决定通过 UDF 进行此操作,请参阅此以获得 Firebird 事件描述 - 这是一个很好的设计规范:http://www.janus-software.com/fbmanual/manual.php?book=php&topic=49

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 2016-06-25
    • 2013-06-26
    • 2014-09-10
    • 1970-01-01
    • 2010-09-26
    相关资源
    最近更新 更多