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

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

Susan Sarandon
リリース: 2025-01-02 18:00:39
オリジナル
403 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート