postgresql触发器(策略)基于另一个表的条目更新表

postgresql触发器(策略)基于另一个表的条目更新表,postgresql,postgresql-9.2,Postgresql,Postgresql 9.2,我是PostgreSQL的新手(被django ORM宠坏了!),我想创建一个触发器,根据另一个表的条目更新一个表 因此,我的模式中有下表: collection_myblogs(id, col1,col2,title,col4,col5) ..其中自动生成字段id。现在,我创建了一个新表,如下所示: CREATE TABLE FullText(id SERIAL NOT NULL, content text NOT NULL); ALTER TABLE ONLY FullText ADD C

我是PostgreSQL的新手(被django ORM宠坏了!),我想创建一个触发器,根据另一个表的条目更新一个表

因此,我的模式中有下表:

collection_myblogs(id, col1,col2,title,col4,col5)
..其中自动生成字段
id
。现在,我创建了一个新表,如下所示:

CREATE TABLE FullText(id SERIAL NOT NULL, content text NOT NULL);
ALTER TABLE ONLY FullText ADD CONSTRAINT fulltext_pkey PRIMARY KEY (id);
我从我的博客集合中插入值,如下所示:

INSERT INTO FullText(content) SELECT title FROM collection_myblogs;
到目前为止一切正常…我现在希望在
FullText
上设置一个触发器,以便
FullText
在每次我的博客有新条目时都用新条目更新自己。因此,我尝试创建一个触发器,如下所示:

CREATE TRIGGER collection_ft_update BEFORE INSERT OR UPDATE ON collection_myblogs FOR EACH ROW EXECUTE PROCEDURE ft_update();
现在,我不完全确定应该执行什么
ft\u update()
功能,目前我有:

CREATE FUNCTION ft_update() RETURNS trigger AS '
BEGIN
INSERT INTO FullText(content) SELECT new.title;
return new;
END
' LANGUAGE plpgsql;
..对于
插入
,但不适用于
更新
。i、 e如果我更新原始列
collections\u myblog(title)
的标题,它会在
FullText
上显示为一个新条目,我不确定如何处理
ids

我希望
ids
即每个表上的主键相同。因此,我的想法是让
全文(id,content)=收藏我的博客(id,title)
——如果这有意义的话。因此,
id
content
应该从
collection\u myblogs
表中复制。如何实现这一目标

我的理解是,我可以在插入或更新我的
collection\u myblogs
之前使用触发器,以某种方式维护
FullText(id,content)==collection\u myblogs(id,title)


我希望您能给我一些指导。

事实证明,这很简单。只是必须遵循

实际上有很多方法来处理这个问题。一些例子:

  • 使用表继承为您的数据创建一个“接口”(不需要触发器,抽象表最终的功能类似于视图)。但这是一个复杂的领域

  • 像您一样使用触发器方法,然后分别处理更新和删除。这里的大问题是,如果有两个相同的文本区域,那么更新触发器需要能够将它们分开

  • 还有很多,但这些应该让你开始