我有一个频道,它有一个配置为每5秒执行一次SQL请求的阅读器,并在另一个表中插入一个新行。
将数据插入的表格:
CREATE TABLE timings(
id SERIAL NOT NULL,
type TEXT NOT NULL,
time TIMESTAMP NOT NULL
);
后处理器中的请求:
INSERT INTO timings (type, time) VALUES (${name}, NOW());
${name}
来自主SQL请求。
在执行请求(将生成消息的请求)之后,它会执行后处理器请求,即使请求中没有输出任何内容。有没有办法只在SQL请求返回什么时运行后处理器脚本?
此外,即使没有生成数据,它也每隔5秒使用一次最后更新名称。奇怪的是,它为所有新的${name}
使用了最后一个更新名称(INSERT
),导致包含相同数据的大量行(time
列除外) )。这是正常的吗?
我正在使用PostgreSQL作为数据库引擎。
答案 0 :(得分:0)
每次在所有目的地运行消息时都会执行后处理器。如果您只想在目的地成功的情况下执行请求,请使用响应变换器。它们位于变压器下方的通道任务中。 在那里你可以使用responseStatus。
if (responseStatus == SENT) {
// do your stuff
}
答案 1 :(得分:0)
使用后处理器不是我的数据库写入的地方。一个简单的目的地将工作正常。然后你可以为一个空的"名称"在源头上。