Итак, у меня есть функция, которая устанавливает ws_source на основе ws_tsource. Прямо сейчас я могу установить правильный ws_source на основе различных ws_tsource, например: если ws_tsource = foobar, то ws_source = foo, если ws_tsource = foobar2, то ws_source = foo2;
Но теперь мне нужно разделить отведения от одного и того же ws_tsource в 'foo' и 'foo2', так что, когда они приходят, каждый получает ws_source 'foo', а следующий получает ws_source 'foo2'.
Я создал переменную для проверки последнего отведения с этим ws_tsource, чтобы new ws_source будет другим, но v_return не влияет на блок If правильно, поэтому не устанавливает правильный ws_source. Таким образом, независимо от ws_source из последнего отведения, новый ws_source всегда имеет значение 'foo2'.
Что я здесь делаю неправильно, и возможно ли это вообще сделать?
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$
;