ホームページ >データベース >mysql チュートリアル >PostgreSQL で動的値をテーブル名として使用する方法

PostgreSQL で動的値をテーブル名として使用する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-27 06:02:14450ブラウズ

How to Use Dynamic Values as Table Names in PostgreSQL?

PostgreSQL でテーブル名として動的値を使用する

データベース操作を扱う場合、多くの場合、テーブル名として動的値を使用する必要があります。これは、クエリの実行中にテーブル名が決定される動的 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。