首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在插入到表Postgresql时,根据最后一个来源更改ws_source

问在插入到表Postgresql时,根据最后一个来源更改ws_source
EN

Stack Overflow用户
提问于 2020-02-28 22:22:57
回答 1查看 13关注 0票数 0

因此,我有一个基于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无关。

我在这里做错了什么,这是可行的吗?

代码语言:javascript
复制
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$
;
EN

回答 1

Stack Overflow用户

发布于 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‘,而不是相反。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60453641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档