MySQL回调 - 有这样的事吗?

时间:2011-08-28 11:37:34

标签: mysql callback

我想知道在INSERT或UPDATE之后是否有类似于使用mysql的回调函数这样的东西,它可以返回行#和这些行的值。

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:2)

这在MySQL中并不可用。我认为有两种方法可以实现这一目标:

  1. 您必须使用轮询进行模拟 - 这是一种相当丑陋的方法,编程很容易但服务器很难。

  2. 请参阅{ {3}} - 编写用户定义的函数,该函数可以使用您设计的某种专有方法通知已注册的侦听器。对程序员更加强硬,在服务器上很容易。在这种情况下,请确保您的UDF是健壮的,在将通知传递给可能已经死亡的监听器时不会冻结等。
这将是一个方便的MySQL通用UDF并带来一些东西与Firebird / Interbase相比,它一直缺乏,他们称之为事件,而不是与MySQL定时事件混淆。另一方面,MySQL的定时事件功能是Firebird& Interbase缺乏我最后一次看他们。

如果您(或某些后来的读者)决定通过UDF执行此操作,请查看Firebird事件描述 - 这是一个很好的设计规范,旨在:Does MySQL permit callbacks in C such that when a change happens, I can be notified?