0

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

4

1 回答 1

0

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

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

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

于 2012-12-04T17:59:39.853 回答