在不同的表列上触发Postgres触发器

时间:2010-04-10 07:40:42

标签: postgresql triggers

CONTENT_TABLE
id | author | timestamp | title | description 
----+-----------------+-----------+----------------+----------------------
(0 rows)

SEARCH_TABLE
id | content_type_id | object_id | tsvector_title | tsvector_description 
----+-----------------+-----------+----------------+----------------------
(0 rows)

当CONTENT_TABLE被更新/插入时,我必须触发一个触发器

这样的事情:

"CREATE TRIGGER tsvectorupdate BEFORE INSERT OR UPDATE ON course_course FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger(SHOULD_BE_THE_COLUMN_OF_SEARCH_TABLE(tsvector_description), 'pg_catalog.english', description);"
  • 实际上,我必须将CONTENT_TABLE的标题和描述的tsvector添加到表SEARCH_TABLE tsvector_title和tsvector_description中。我可以为它触发一个触发器吗?

任何形式的帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:3)

默认的tsvector_update_trigger无法查看另一个表。但是如果你自己编写(例如pl / pgsql),你可以轻松地做到这一点。见http://www.postgresql.org/docs/8.4/static/plpgsql-trigger.html。您只需要收集数据并让函数调用to_tsvector(),将结果保留在tsvector列中。