如何从触发器发送Postgres程序的整个记录

时间:2012-12-04 17:53:04

标签: postgresql stored-procedures triggers

我是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。提前谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

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