Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何知道postgresql在最近5秒内的数据变化_Android_Postgresql_Odoo 8 - Fatal编程技术网

Android 如何知道postgresql在最近5秒内的数据变化

Android 如何知道postgresql在最近5秒内的数据变化,android,postgresql,odoo-8,Android,Postgresql,Odoo 8,我正在开发一个odoo8(OpenERP)应用程序。该应用程序使用postgresql数据库。在Odoo 8的后端,有添加销售订单按钮。所以,我想知道,如何知道在最后5秒内变化的数据?我的需要是我想插入移动应用程序中的数据。什么表格会改变?有什么疑问吗?或者另一个建议。 该数据库有314个表。有没有像蒙约格那样的part3应用? 非常感谢您的帮助。对于这种情况,有一种最好的方法可以作为 在每个表中始终使用两列作为“CreatedOn”和“LastUpdateOn”,并在其中插入proepr值作为

我正在开发一个odoo8(OpenERP)应用程序。该应用程序使用postgresql数据库。在Odoo 8的后端,有添加销售订单按钮。所以,我想知道,如何知道在最后5秒内变化的数据?我的需要是我想插入移动应用程序中的数据。什么表格会改变?有什么疑问吗?或者另一个建议。 该数据库有314个表。有没有像蒙约格那样的part3应用?
非常感谢您的帮助。

对于这种情况,有一种最好的方法可以作为


在每个表中始终使用两列作为“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应用?