每当有人请求新的任务集(运行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报告时则不行。这在SQLFiddle中也不起作用。在这两个工具中,始终只显示前5行。
答案 0 :(得分:0)
要完成这项工作,您必须将数据源的&AutoCommit
属性设置为true
适用于BIRT Designer 4.2.2和相关的BIRT Viewer