我正在尝试在我的postgres数据库上创建一个新模式,该模式存储在现有表中,我的查询如下所示:
CREATE SCHEMA (SELECT name FROM table)
但我收到语法错误。我究竟做错了什么?这是创建新架构的有效方法吗?针对此问题还存在哪种其他解决方案?
答案 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