При добавлении в таблицу Postgresql смените источник ws_source в зависимости от последнего источника. - PullRequest
0 голосов
/ 28 февраля 2020

Итак, у меня есть функция, которая устанавливает 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$
;

1 Ответ

0 голосов
/ 02 марта 2020

Итак,

Все, что мне нужно было сделать, это

выбрать ws_source в v_return из отведений, где ws_tsource = порядок 'foobar' по ws_id des c предел 1, смещение 1;

Потому что функция не вставляла отведение, а ОБНОВЛЯЛА таблицу с новым отведением, которое уже есть. Без смещения последним лидерством всегда был новый, у которого по умолчанию было «foo» в качестве «ws_source», следовательно, оно всегда обновлялось до «foo2», а никогда наоборот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...