【问题标题】:In postgresql trigger function ------- How can I use NEW variable as an array?在 postgresql 触发函数中--------如何将 NEW 变量用作数组?
【发布时间】:2011-06-19 17:20:49
【问题描述】:

我们可以使用NEW.columnname,我们得到了它的价值。

我可以使用NEW 变量作为数组来获取它的值吗?比如NEW[1]NEW.1 ...或者如果我在一个文本数组中传递列名来触发函数参数,那么我可以使用NEW.$1 来获取第一列值吗?

我只需要使用 language plpgsql

【问题讨论】:

  • NEW.column_name 应该可以工作;使用序号位置很脆弱——如果有人更改列顺序,可能会导致问题。
  • 我正在尝试 NEW.variable 这个变量是文本类型并包含 column_name 但 NEW.variable 将“变量”识别为键而不是它的值....
  • 为什么你的代码不知道它正在处理哪些列?为什么要对表中的列进行(假定)排序?您已经描述了一个您尝试实施的解决方案(如果有的话,它不会很好地工作),但没有告诉我们您要解决的潜在问题——我们可能更适合为这些问题提供建议.

标签: sql postgresql triggers


【解决方案1】:

here 所述,您可以将一行/行与数组相互转换。

【讨论】:

  • 我看到了你的代码,但这对我没有帮助,因为我想对 NEW 变量进行操作,因为 NEW.in_array[0] 这东西不起作用
【解决方案2】:

我建议使用dup question,因为它确实是同一个潜在问题。


我很乐意被显示错误(我自己也偶尔需要这个),但我最清楚的是,使用变量引用列名是您实际需要使用 PL/C 触发器的情况之一,而不是比 PL/PgSQL 触发器。您可以在 contrib/spi 和 PGXN 中找到此类触发器的示例。

或者,编写一个函数来编写您的触发器using execute statements

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多