0

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

CREATE SCHEMA (SELECT name FROM table)

但我收到语法错误。我究竟做错了什么?这是创建新模式的有效方法吗?这个问题还有哪些其他解决方案?

4

2 回答 2

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;
$$
于 2013-03-21T15:56:16.390 回答
-1

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

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

ERROR: syntax error at or near "("
SQL state: 42601
Character: 15
于 2013-03-21T14:04:03.827 回答