使用存储的名称创建SCHEMA

时间:2013-03-21 13:46:54

标签: sql postgresql select schema

我正在尝试在我的postgres数据库上创建一个新模式,该模式存储在现有表中,我的查询如下所示:

CREATE SCHEMA (SELECT name FROM table)

但我收到语法错误。我究竟做错了什么?这是创建新架构的有效方法吗?针对此问题还存在哪种其他解决方案?

2 个答案:

答案 0 :(得分:1)

您可以使用动态sql执行此操作:

do
$$
  declare s_name text;
begin
  -- make sure there is exactly one row in that table!
  -- otherwise you need some where condition or an aggregat to ensure that.
  SELECT name INTO s_name FROM some_table;
  execute 'create schema '|| quote_ident(s_name);
end;
$$

答案 1 :(得分:-1)

创建模式语法是不可能的,需要有效的模式名称(即有效的模式名称字符串)。在你的情况下,它将抛出异常

********** Error **********

ERROR: syntax error at or near "("
SQL state: 42601
Character: 15