ホームページ >データベース >mysql チュートリアル >PostgreSQL でテーブル名を動的に生成するにはどうすればよいですか?
SQL では、動的クエリを作成できる PL/PgSQL バリアントを除き、動的 SQL はサポートされていません。クエリの結果を別のクエリのテーブル名として使用するには、PL/PgSQL EXECUTE ステートメントを利用できます。
次に例を示します。
DO $$ BEGIN EXECUTE format('CREATE TABLE %I AS SELECT * FROM backup', 'backup_' || to_char(CURRENT_DATE,'yyyy-mm-dd')); END; $$ LANGUAGE plpgsql;
の %I 形式指定子format 関数は、テーブル名を含む識別子を適切に引用符で囲み、quote_ident による明示的な引用符の必要性を排除します。
SQL インジェクションの脆弱性があるため、%L を使用した format(...) の代わりにリテラルに EXECUTE ... USING ステートメントを使用することを検討してください。テーブル/列名のような識別子の場合、%I パターンの簡潔さは依然として quote_ident の有用な代替手段となります。
以上がPostgreSQL でテーブル名を動的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。