ホームページ >データベース >mysql チュートリアル >PostgreSQL にテーブルが存在しない場合にのみテーブルを作成するにはどうすればよいですか?

PostgreSQL にテーブルが存在しない場合にのみテーブルを作成するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-02 18:00:39430ブラウズ

How Can I Create a Table in PostgreSQL Only If It Doesn't Already Exist?

PostgreSQL で条件付きテーブルを作成する

MySQL では、CREATE TABLE IF NOT EXISTS 構文を使用すると、テーブルが存在しない場合にのみテーブルを作成できます。すでに存在しています。これにより、スクリプトを複数回実行するときに誤ってテーブルが再作成されることが防止されます。

PostgreSQL 9.1 以降

PostgreSQL 9.1 では、MySQL と同じ機能が導入されました:

CREATE TABLE IF NOT EXISTS myschema.mytable (i integer);

PostgreSQL 以前9.1

古いバージョンの PostgreSQL の場合は、次の回避策関数を使用できます:

CREATE OR REPLACE FUNCTION create_mytable()
  RETURNS void
  LANGUAGE plpgsql AS
$func$
BEGIN
  IF EXISTS (SELECT FROM pg_catalog.pg_tables 
              WHERE  schemaname = 'myschema'
              AND    tablename  = 'mytable') THEN
    RAISE NOTICE 'Table myschema.mytable already exists.';
  ELSE
    CREATE TABLE myschema.mytable (i integer);
  END IF;
END
$func$;

関数を呼び出してテーブルを作成します:

SELECT create_mytable();

メモ:

  • pg_tables テーブルでは大文字と小文字が区別されます。
  • この関数は、関連オブジェクトではなく実際のテーブルのみをチェックします。
  • 実行ロールに必要な権限がない場合は、SECURITY DEFINER キーワードの使用を検討してください。

以上がPostgreSQL にテーブルが存在しない場合にのみテーブルを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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