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