我是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。提前谢谢。
答案 0 :(得分:0)
您不需要将行“传递”到触发器函数(顺便说一下:PostgreSQL中没有“过程”,只有函数)。
如果函数声明为“返回触发器”,则可以自动将整行作为“新”或“旧”访问。
手册中的更多详细信息:http://www.postgresql.org/docs/current/static/plpgsql-trigger.html