データベース操作を扱う場合、多くの場合、テーブル名として動的値を使用する必要があります。これは、クエリの実行中にテーブル名が決定される動的 SQL を通じて実現できます。
PostgreSQL では、DO ブロックまたは PL/PgSQL 関数内の PL/PgSQL EXECUTE ステートメントを使用して動的 SQL を実装できます。通常の SQL は動的 SQL をサポートしません。
たとえば、次の目標を考えてみましょう。クエリの結果を使用して、後続のクエリのテーブル名を動的に決定します。
クエリテーブル名を取得します:
SELECT 'backup_' || TO_CHAR(CURRENT_DATE,'yyyy-mm-dd')
その後に必要なテーブル名クエリ:
CREATE TABLE (SELECT 'backup_' || TO_CHAR(CURRENT_DATE,'yyyy-mm-dd')) AS * SELECT FROM backup
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;
説明:
format(...) 関数は、動的 SQL ステートメントを構築するために使用されます。 %I 形式指定子を使用すると、テーブル/列名が適切に引用符で囲まれるようになります。
注:
リテラル値の場合は、代わりに EXECUTE ... USING を使用することをお勧めします。 format(...) を %L で指定します。ただし、テーブル名のような識別子の場合、フォーマット %I パターンは quote_ident を使用する代わりに便利です。
以上がPostgreSQL で動的値をテーブル名として使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。