【问题标题】:MySQL NDB Events - listening for changes to specific rowMySQL NDB 事件 - 监听特定行的更改
【发布时间】:2015-04-16 23:08:43
【问题描述】:

我在 NDB API 中使用事件。我想知道是否可以根据特定行监听事件...

例如:

CREATE TABLE mytable( id int(11) NOT NULL AUTO_INCREMENT, 
                      name  varchar(40), 
                      PRIMARY KEY(id) );

INSERT INTO mytable values(NULL,'john');
INSERT INTO mytable values(NULL,'sallie');
INSERT INTO mytable values(NULL,'martin');
INSERT INTO mytable values(NULL,'alex');

所以,现在我们有一个包含两列的表(mytable)。我们已经添加了 4 行。

在我测试 NDB API 的示例中,我能够判断这些名称之一何时已更改。因此,假设我们将“john”更改为“jim”。在我的代码中,在 pollEvents() 和 getValue() 之后,通过查看 NdbRecAttr 的内容,我可以看到“john”已更改为“jim”。

但是,有没有办法只监听特定 id(row) 的变化?

例如,假设我想知道名称“alex”(PK id = 4) 何时更改。

这可能吗?

或者有没有办法在事后判断哪个特定行已被更改?

【问题讨论】:

    标签: mysql mysql-cluster


    【解决方案1】:

    我能找到的唯一方法是使用 Event::addEventColumn() 请求主键以及您正在侦听事件的列。然后你可以根据那个/那些主键执行你自己的过滤

    https://dev.mysql.com/doc/ndbapi/en/ndb-event-methods.html#ndb-event-addeventcolumn

    【讨论】:

      【解决方案2】:

      我曾处理过类似的需求,即每当 MySQL DB 发生变化时都需要回调。正如您可能知道的那样,NDB 只是引擎,通过 MySQL 前端实现的功能仍然是可能的。

      因此,我建议您使用ODB 并为post-update 注册回调,如此处所述http://www.codesynthesis.com/products/odb/doc/manual.xhtml#17

      我在以前的项目中使用过这个,解决方案非常可靠

      【讨论】:

        猜你喜欢
        • 2014-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多