【问题标题】:How to send Postgres procedure entire record from trigger如何从触发器发送 Postgres 过程的整个记录
【发布时间】:2012-12-04 17:53:03
【问题描述】:

我是 Postgres (9.0.5) 的新手,通常编写的函数/触发器很少。我想在我的widgets 表上设置一个触发器,这样每次插入、更新或删除小部件时,整个记录都会作为参数传递给存储过程。然后,该过程可以检查记录中的各种更改并决定采取什么行动。这是迄今为止我最好的尝试,虽然我知道我偏离了方向:

CREATE OR REPLACE TRIGGER tg_widgets
ON TABLE widgets
AFTER EVERY INSERT, UPDATED, DELETE
DO run_widget_handler

CREATE OR REPLACE PROCEDURE run_widget_handler AS
    # Definitition here
    # If the widget's name was changed, do X
    # Else if the widget's wow_factor was changed, do Y
    # Else, do Z

我并不担心如何实现run_widget_handler的定义,只是寻求帮助并编写触发器并将widget传递给proc。提前致谢。

【问题讨论】:

    标签: postgresql stored-procedures triggers


    【解决方案1】:

    您不需要将行“传递”给触发函数(顺便说一句:PostgreSQL 中没有“过程”,只有函数)。

    如果函数被声明为“返回触发器”,您可以自动将整行访问为“新”或“旧”。

    手册中的更多详细信息:http://www.postgresql.org/docs/current/static/plpgsql-trigger.html

    【讨论】:

      猜你喜欢
      • 2012-04-11
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 2022-01-26
      • 2016-12-10
      • 1970-01-01
      相关资源
      最近更新 更多