Android 如何知道postgresql在最近5秒内的数据变化
我正在开发一个odoo8(OpenERP)应用程序。该应用程序使用postgresql数据库。在Odoo 8的后端,有添加销售订单按钮。所以,我想知道,如何知道在最后5秒内变化的数据?我的需要是我想插入移动应用程序中的数据。什么表格会改变?有什么疑问吗?或者另一个建议。 该数据库有314个表。有没有像蒙约格那样的part3应用?Android 如何知道postgresql在最近5秒内的数据变化,android,postgresql,odoo-8,Android,Postgresql,Odoo 8,我正在开发一个odoo8(OpenERP)应用程序。该应用程序使用postgresql数据库。在Odoo 8的后端,有添加销售订单按钮。所以,我想知道,如何知道在最后5秒内变化的数据?我的需要是我想插入移动应用程序中的数据。什么表格会改变?有什么疑问吗?或者另一个建议。 该数据库有314个表。有没有像蒙约格那样的part3应用? 非常感谢您的帮助。对于这种情况,有一种最好的方法可以作为 在每个表中始终使用两列作为“CreatedOn”和“LastUpdateOn”,并在其中插入proepr值作为
非常感谢您的帮助。对于这种情况,有一种最好的方法可以作为
在每个表中始终使用两列作为“CreatedOn”和“LastUpdateOn”,并在其中插入proepr值作为创建时间添加当前时间,然后在每次更新时仅更改“last updated on by current time”,以便您可以根据需要轻松获取数据。对于这种情况,有一种最好的方法来管理as
在每个表中始终使用两列作为“CreatedOn”和“LastUpdateOn”,并在其中插入proepr值作为“创建时间”和“添加当前时间”,然后在每次更新时仅更改“按当前时间最后更新”,以便您可以根据需要轻松获取数据。您还可以添加如下函数:
create or replace function notify_table_change() RETURNS TRIGGER
LANGUAGE PLPGSQL AS
$$
NOTIFY all_writes TG_RELNAME;
IF TG_OP = 'DELETE' THEN RETURN OLD; ELSE RETURN NEW; END OF;
$$;
然后可以为所有插入、更新和删除添加触发器(但不能截断,因为我没有处理它)
然后,te客户端可以:
LISTEN all_writes;
并将获得实时更新表的实时通知。您还可以添加如下功能:
create or replace function notify_table_change() RETURNS TRIGGER
LANGUAGE PLPGSQL AS
$$
NOTIFY all_writes TG_RELNAME;
IF TG_OP = 'DELETE' THEN RETURN OLD; ELSE RETURN NEW; END OF;
$$;
然后可以为所有插入、更新和删除添加触发器(但不能截断,因为我没有处理它)
然后,te客户端可以:
LISTEN all_writes;
并将获得实时更新哪些表的实时通知。监控数据库对这个问题的处理方式有点奇怪。为odoo(和OpenERP)编写自定义模块非常简单和直接。我会创建一个模块,它可以触发你想做的任何事情 下面是最简单的OpenERP/odoo模块的一个简单示例:
from osv import osv
class my_custom_module(osv.osv):
_inherit = 'sale.order'
_name = 'sale.order'
def create(self, cr, uid, vals, ctx={}):
<your code here, whatever you want to do when new sale.order obejcet is created >
return super(my_custom_module, self).create(cr, uid, vals, ctx)
my_custom_module()
从osv导入osv
将my_自定义_模块(osv.osv)分类:
_继承='sale.order'
_名称='sale.order'
def create(自身、cr、uid、VAL、ctx={}):
返回超级(我的自定义模块,自我)。创建(cr、uid、VAL、ctx)
我的自定义模块()
监控数据库对这个问题的处理方式有点奇怪。为odoo(和OpenERP)编写自定义模块非常简单和直接。我会创建一个模块,它可以触发你想做的任何事情
下面是最简单的OpenERP/odoo模块的一个简单示例:
from osv import osv
class my_custom_module(osv.osv):
_inherit = 'sale.order'
_name = 'sale.order'
def create(self, cr, uid, vals, ctx={}):
<your code here, whatever you want to do when new sale.order obejcet is created >
return super(my_custom_module, self).create(cr, uid, vals, ctx)
my_custom_module()
从osv导入osv
将my_自定义_模块(osv.osv)分类:
_继承='sale.order'
_名称='sale.order'
def create(自身、cr、uid、VAL、ctx={}):
返回超级(我的自定义模块,自我)。创建(cr、uid、VAL、ctx)
我的自定义模块()
这有帮助吗
在实时商业应用程序中。我使用的方法是创建和更新日期/时间戳列
范例
create table foo (
foo_id serial not null unique,
created_timestamp timestamp not null default current_timestamp,
updated_timestamp timestamp not null default current_timestamp
) with oids;
做这项工作的触发器
CREATE TRIGGER check_table_to_do_update
--What i want to do
桌上的扳机
CREATE TRIGGER check_update_foo
AFTER UPDATE ON foo
FOR EACH ROW
WHEN (OLD.updated_timestamp IS DISTINCT FROM NEW.updated_timestamp)
EXECUTE PROCEDURE check_table__to_do_update();
其他任何东西都会给系统带来不必要的开销
最好的这有帮助吗
在实时商业应用程序中。我使用的方法是创建和更新日期/时间戳列
范例
create table foo (
foo_id serial not null unique,
created_timestamp timestamp not null default current_timestamp,
updated_timestamp timestamp not null default current_timestamp
) with oids;
做这项工作的触发器
CREATE TRIGGER check_table_to_do_update
--What i want to do
桌上的扳机
CREATE TRIGGER check_update_foo
AFTER UPDATE ON foo
FOR EACH ROW
WHEN (OLD.updated_timestamp IS DISTINCT FROM NEW.updated_timestamp)
EXECUTE PROCEDURE check_table__to_do_update();
其他任何东西都会给系统带来不必要的开销
最好的如您所知,该数据库有314个表。除此之外,我不允许添加该数据库的列。是否有MONYog这样的第3部分的应用程序?您知道数据库有314个表。除此之外,我不允许添加该数据库的列。有没有像蒙约格那样的part3应用?