需要 Postgres 触发器和函数方面的帮助

2024-02-07

我有一个查找表,其中包含一列来源(来自通过我创建的 Web 服务 API 捕获的各种硬编码活动)以及应与其关联的各个品牌。这样我就可以为品牌为空的记录赋予品牌 - 以便可以通过营销自动化工具使用特定模板来欢迎它们。

我最终会弃用这个 API,并用需要品牌的 API 来替换它,但与此同时,我必须制定一个临时解决方案,直到我给所有品牌团队时间来更改他们的 API 调用。

我写了这个函数:

CREATE OR REPLACE FUNCTION public.brand_lookup(IN i_brand TEXT )
  RETURNS SETOF RECORD VOLATILE AS
$$
BEGIN
   RETURN QUERY
     UPDATE subscriber
     SET brand = (SELECT brand FROM brand_translation
                  WHERE source = subscriber.source);
END;
$$
LANGUAGE plpgsql;

以及插入记录时触发该函数的触发器:

CREATE TRIGGER brand_translation 
  AFTER INSERT ON subscriber
  FOR EACH ROW EXECUTE PROCEDURE public.brand_lookup();

但我的触发器返回错误“错误:函数 public.brand_lookup() 不存在”(但它创建成功)”。除了我的触发器看不到我的函数这一事实之外,该函数还会执行我的操作吗?我打算这么做吗?我对函数相当菜鸟(正如你可能知道的那样)。


它可能会这样工作:

CREATE OR REPLACE FUNCTION public.f_brand_lookup()
   RETURNS trigger AS
$func$
BEGIN
   SELECT INTO NEW.brand
          bt.brand
   FROM   brand_translation bt
   WHERE  bt.source = NEW.source;

   RETURN NEW;
END
$func$
LANGUAGE plpgsql;

CREATE TRIGGER brand_insert_before_lookup
BEFORE INSERT ON subscriber
FOR EACH ROW EXECUTE PROCEDURE public.f_brand_lookup();

你的例子有太多完全错误的地方。
您需要从学习基础知识开始。一如既往,我推荐一本非常好的手册。
Start here http://www.postgresql.org/docs/current/interactive/triggers.html and here http://www.postgresql.org/docs/current/interactive/plpgsql-trigger.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需要 Postgres 触发器和函数方面的帮助 的相关文章

随机推荐

  • R中如何合并表?

    我想这会有一个简单的答案 但我无法解决 这是一个使用的示例iris数据集 a lt table iris 2 b lt table iris 3 如何将这两个表添加到一起 例如 在新输出表中 变量 3 的值为 27 26 1 变量 3 3
  • 在 Tomcat 中使用 Spring 通过 JMX 公开 Hibernate(缓存)统计信息

    收集 Hibernate Ehcache 统计信息并在基于 Spring 的设置中通过 JMX 公开它们似乎很容易 互联网有很多资源可以帮助您 例如http snippets dzone com posts show 11159 http
  • 在bash中重复打印一个字符[重复]

    这个问题在这里已经有答案了 有没有办法在 bash 中重复打印相同的字符 就像您可以使用此构造在 python 中执行此操作一样 print 3 gives 实际上有一个单行代码可以做到这一点 printf 0 s 1 10 prints
  • VB6 .frm 文件格式属性无故更改!

    我们 我们的公司 注意到 在从不同用户 机器将代码签入到我们的存储库之间 VB6 表单文件内的 Format 属性不断变化 即使我们没有在 PC 上更改任何内容 之前 格式 82182147 之后 格式 69337091 它给我们的源代码比
  • 数据帧子集性能

    我有几个大型数据帧 100 万行以上 x 6 10 列 需要重复进行子集化 子集部分是我的代码中最慢的部分 我很好奇是否有办法更快地做到这一点 load https dl dropbox com u 4131944 Temp DF IOST
  • Pascal 对象:如何进行类型化前向声明?

    我正在将很棒的 fmod C 标头翻译为 Pascal 但由于前向声明而陷入困境 如果我声明该函数before类型 错误为 FMOD CODEC STATE 未知 如果我声明 FMOD CODEC STATEbefore该函数 错误为 FM
  • 如何在 CherryPy 中执行异步后处理?

    Context 想象一下您有一个标准的 CherryPy hello word 应用程序 def index self return Hello world index exposed True 并且您想要进行一些后处理 即记录请求处理或仅
  • 如何从命令行在 Ubuntu Linux 上打开 AVD 管理器?

    如何从命令行在 Ubuntu Linux 上打开 AVD 管理器 对于那些来这里是因为android avd命令已被弃用 现在的操作方法如下 使用Android Studio 使用有效的 studio 项目打开 Android Studio
  • XMPP 使用哪个端口?

    我搜索过但没有找到 XMPP 使用哪些端口 我需要实现XMPP服务器和客户端并使用XML传输 文件传输和流媒体 他们使用不同的端口吗 有没有办法让它们都一样使用 这样我就不需要打扰网络管理员 谢谢 根据维基百科 http en wikipe
  • 意外标记:LIMIT

    当我将上述依赖项与 NamedQuery 一起使用时 我在错误部分收到错误提示 注意 请指教 是jar问题还是JBOSS问题 我在 Jboss 7 版本中使用 jdk1 7 运行此代码 使用 EntityManager 使用命名查询 Que
  • 编写优秀的 Twisted 网络资源

    我编写了第一个 Twisted 10 1 0 网络Resource我正在寻求反馈 因为我觉得这并不完全遵循最佳实践 并且可能包含新手错误 资源响应 url http www foo baz abc123并依赖于返回的服务dict 如果出现任
  • “尝试设置非属性列表对象......”带有自定义类的 NSMutableDictionary [重复]

    这个问题在这里已经有答案了 我有一个名为的自定义类ServerModule这是一个子类NSObject 我基本上存储了所有这些ServerModules 中包含一个键值对NSMutableDictionary 然后字典存储在NSUserDe
  • 主体参数不能与表单参数一起使用 - 具有 Headers 和 json 数据的 Feign 客户端

    我有一个像这样的 FeignClient RequestLine POST enroll Headers header1 header1 header2 header2 Content Type application json Respo
  • 还有什么更好的方法来解决 Python 中的“静态变量”呢?

    似乎在Python中 要在类中声明变量 它是静态的 在下一个实例中保留其值 有什么更好的方法来解决这个问题 class Foo number 0 def set self self number 1 gt gt gt foo Foo gt
  • Keras 2,TypeError:无法pickle _thread.lock对象

    我正在使用 Keras 创建一个 ANN 并在网络上进行网格搜索 我在运行以下代码时遇到以下错误 model KerasClassifier build fn create model input dim verbose 0 define
  • 如何在与当前片段相同的空间中加载新片段

    我正在寻找一些关于处理启动其他片段的片段的最佳方法的建议 我正在转换一个应用程序 我开始使用更多基于活动的方法编写该应用程序 并开始将其转移到使用片段 我有一些用于启动新活动的片段 我想将它们移至当前片段所在的同一视图中启动其他片段 例如
  • 在地图列的 Spark 数据框中如何使用所有键的常量更新值

    我有 Spark 数据框 其中包含 Integer 和 Map 类型的两列 我想知道更新映射列的所有键的值的最佳方法 在 UDF 的帮助下 我能够更新值 def modifyValues map data Map String Int gt
  • 用 Java 调高/调低计算机音量?

    我想用一个命令来调高或调低计算机的主音量 100 0 我看到我可以使用FloatControl 但我不知道如何使用它 看看看看使用JavaSound控制主音量 http www coderanch com t 492931 java jav
  • 使用 GTM 在一个容器中实施两个 Analytics 属性

    我想在两个包含相同网站 cms 代码但内容语言不同的域上实施 Google 跟踪代码管理器 因此 我想使用一个容器 一个 GTM 代码 其中包含两个标签 一个标签包含domainA com 的UA 代码段 另一个标签包含domainB co
  • 需要 Postgres 触发器和函数方面的帮助

    我有一个查找表 其中包含一列来源 来自通过我创建的 Web 服务 API 捕获的各种硬编码活动 以及应与其关联的各个品牌 这样我就可以为品牌为空的记录赋予品牌 以便可以通过营销自动化工具使用特定模板来欢迎它们 我最终会弃用这个 API 并用