从视图返回选择,更新一列postgres

时间:2015-03-20 22:09:37

标签: postgresql

我有一个观点。我想要一个从视图中返回行的函数;但是,我需要在我返回的每一行中更改一个值。

我可以使用选择和写入select子句中的所有字段名称并列出所有值(包括我更改的值)来执行此操作,但这会使代码非常模糊。

好像我想要一个非常轻便的临时桌子。我想写一些类似的东西:

update { select * from myView where f(row,x,y) }
     set column = y 

其中x和y是我的函数的参数,column是myView的列名,f是另一个函数。

我能写出这样的东西吗?感谢。

1 个答案:

答案 0 :(得分:0)

一些指示:

  • 您可以使用另一个视图执行此操作,您必须在其中单独列出所有列:CREATE VIEW myViewModified AS SELECT y AS column, ... FROM myView;然后您可以使用SELECT * FROM myViewModified WHERE f(row,x,y);
  • 您还可以在代码中编写SELECT y AS column1modified, * FROM myView;并使用column1modified。这样你就可以使用星号符号。
  • 列出所有值可能会使代码模糊不清,但如果您通过Poor SQL驱动代码,则可以使其看起来非常干净(如果您习惯于阅读SQL查询,也会有所帮助)。
  • Why is SELECT * considered harmful?