Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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
Postgresql 匿名任务锁定_Postgresql_Birt - Fatal编程技术网

Postgresql 匿名任务锁定

Postgresql 匿名任务锁定,postgresql,birt,Postgresql,Birt,每当有人请求运行BIRT报告的新任务集时,我想显示表中的5个任务行。条件是,一旦显示任务,则同一任务在接下来的X秒内无法再次显示 样本数据: /* -- drop table if exists task_list; -- Create table for tasks create table task_list ( id_task serial, task_lock timestamp without time zone ); -- Insert some tasks inser

每当有人请求运行BIRT报告的新任务集时,我想显示表中的5个任务行。条件是,一旦显示任务,则同一任务在接下来的X秒内无法再次显示

样本数据:

/*
-- drop table if exists task_list;

-- Create table for tasks
create table task_list (
  id_task serial,
  task_lock timestamp without time zone
 );

-- Insert some tasks
insert into task_list select * from generate_series(1,100);
*/
为了实现所需的行为,我在CTE内部使用update创建了查询:

with

tasks as (
  update task_list set task_lock = Now()
  where
    id_task in (select id_task 
                from task_list 
                where task_lock is null 
                or task_lock < (Now() - interval '30 seconds') limit 5)
  returning *
)  

select * from tasks;

当我从pgAdmin重复运行查询时,这非常有效,但当我将此查询添加到BIRT报告时,情况就不一样了。这也不适用于。在这两种工具中,始终只显示前5行。

要执行此操作,必须将数据源的&AutoCommit属性设置为true


在BIRT Designer 4.2.2和相关的BIRT查看器中工作

您在报告中的何处添加了此项?我的直觉是,它可能在第一次生成报告时只被调用一次。@venite我将其作为标准数据集添加,使用JDBC连接到PostgreSQL,将sql直接粘贴到查询窗口中。每次我在报表查看器中单击“刷新”时,都会对查询进行计算。我通过将now列添加到数据集中来验证这一点,它在