postgres更新表基于另一个表

时间:2014-12-16 16:59:10

标签: postgresql sql-update

我对postgres相对较新(我是django用户 - 通过orm使用pgsql),我试图想出一种方法将内容插入到一个特定的列中 - 但到目前为止,我没有任何运气。所以,我首先拥有一个包含两列的数据库dzmodel_ufid(这是PK)和content - 两者都填充(比如50个条目)。

现在,我想创建另一个表,引用(外键)到id的{​​{1}}。所以,我做了以下几点:

dzmodel_uf

工作正常。现在,我在MyNewTable表上创建一个列,如下所示:

--INITIALIZATION
CREATE TABLE MyNewTable(id integer REFERENCES dzmodel_uf (id));
ALTER TABLE ONLY FullTextSearch ADD CONSTRAINT mynewtable_pkey PRIMARY KEY (id);

..这也很好。最后,我想添加ALTER TABLE MyNewTable ADD COLUMN content_tsv_gin tsvector; - 列dzmodel_uf中的内容,如下所示:

content

..但是这个FAILS并且说UPDATE MyNewTable SET content_tsv_gin = to_tsvector('public.wtf', dzmodel_uf(content) ) 列不存在..

简而言之,我不确定如何引用另一个表中的值。

1 个答案:

答案 0 :(得分:2)

我希望我理解这个问题(它很模糊)。目标表中没有行,所以你必须添加它们。 您需要INSERT,而不是UPDATE

INSERT INTO  MyNewTable (id,content_tsv_gin)
SELECT dzu.id, to_tsvector( public.wtf, dzu.content )
FROM dzmodel_uf dzu
  ;