因此,我有一个基于ws_tsource设置ws_source的函数。现在我可以根据不同的ws_tsource设置正确的ws_source,例如:如果ws_tsource = foobar则ws_source = foo,如果ws_tsource= foobar2则ws_source = foo2;
但现在我必须将leads从相同的ws_tsource拆分到“foo”和“foo2”,所以当它们到达时,一个获得ws_source“foo”,下一个获得ws_source“foo2”。
我创建了一个变量来检查具有该ws_tsource的最后一个前导,以便新的ws_source将不同,但是v_return不会正确地影响If块,因此没有设置正确的ws_source。因此,新的ws_source始终设置为'foo2‘,而与上一条线索的ws_source无关。
我在这里做错了什么,这是可行的吗?
CREATE OR REPLACE FUNCTION public.leads_ins()
RETURNS trigger
LANGUAGE plpgsql
AS $function$
DECLARE
v_return text;
BEGIN
if NEW.ws_source IN ('foo') then
v_priority := 13821;
if left(new.ws_tsource,7) = 'foobar' then
select ws_source into v_return from leads where ws_tsource = 'foobar' order by ws_id desc limit 1;
if v_return = 'foo' then
v_priority := 16460;
update leads
set ws_source = 'foo2',
where ws_id = NEW.ws_id;
end if;
if v_return = 'foo2' then
v_priority := 13821;
update leads
set ws_source = 'foo',
where ws_id = NEW.ws_id;
end if;
end if;
end if;
END IF;
return NEW;
end;
$function$
;发布于 2020-03-03 01:00:29
所以,
我所要做的就是
选择ws_source into v_return from leads where ws_tsource = 'foobar‘order by ws_id desc limit 1 offset 1;
因为该函数不是插入lead,而是使用已有的新lead更新表。如果没有偏移量,最后一个导程始终是新的导程,默认情况下'foo‘为'ws_source’,因此始终更新为'foo2‘,而不是相反。
https://stackoverflow.com/questions/60453641
复制相似问题