MySQL NDB 事件 - 侦听对特定行的更改

MySQL NDB Events - listening for changes to specific row

我在 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');

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

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

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

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

这可能吗?

或者有没有办法在事后判断哪一行被更改了?

我能找到实现此目的的唯一方法是使用 Event::addEventColumn() 以及您正在侦听事件的列来请求主键。然后你可以根据 that/those 主键

执行你自己的过滤

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

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

所以我建议你选择 ODB and register a callback for post-update as explained here http://www.codesynthesis.com/products/odb/doc/manual.xhtml#17

我在之前的项目中使用过它,解决方案非常可靠