我在PostgreSQL数据库工作。
我想使用一个循环从一个表列创建多个视图。
假设我有这个表mylist
:
id type
1 Fish
2 Bird
3 Fish
4 Fish
5 Bird
我使用该查询从type列中获取所有非重复值:
SELECT DISTINCT type from mylist;
它返回:
type
Fish
Bird
如何使用这两个值来自动创建以下视图(这里我只有两个值,但实际上可能会得到50多个不同的值):
- mylist_鱼
- 我的列表_bird
我知道应该使用触发器,但不知道如何根据查询返回的值创建视图。
1条答案
按热度按时间0yg35tkg1#
诀窍在于动态地构建和运行所有的创建语句。
您可以在命令行中使用
\gexec
参数执行此操作。首先运行它,不要使用结尾的
\gexec
,看看会执行什么。使用您的示例,它将是:如果你真的需要把它放在一个触发器或者函数里面(尽管我个人不会盲目地在每次表更新时创建或者重新创建视图),你可以使用
execute
,下面的例子使用了一个匿名的do
块,你可以把它的内容移动到你的触发器中。