我正在尝试在我的 postgres 数据库上创建一个新模式,其名称存储在现有表中,我的查询如下所示:
CREATE SCHEMA (SELECT name FROM table)
但我收到语法错误。我究竟做错了什么?这是创建新模式的有效方法吗?这个问题还有哪些其他解决方案?
我正在尝试在我的 postgres 数据库上创建一个新模式,其名称存储在现有表中,我的查询如下所示:
CREATE SCHEMA (SELECT name FROM table)
但我收到语法错误。我究竟做错了什么?这是创建新模式的有效方法吗?这个问题还有哪些其他解决方案?
您可以使用动态 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;
$$
这是不可能的,创建模式语法需要有效的模式名称(即有效的模式名称字符串)。在你的情况下,它会抛出异常
********** Error **********
ERROR: syntax error at or near "("
SQL state: 42601
Character: 15