4

我在 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)何时更改。

这可能吗?

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

4

2 回答 2

2

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

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

于 2015-04-25T17:47:24.567 回答
0

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

因此,我建议您使用ODBpost-update并按照此处的说明注册回调http://www.codesynthesis.com/products/odb/doc/manual.xhtml#17

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

于 2015-04-26T17:39:24.063 回答