ホームページ > データベース > mysql チュートリアル > PostgreSQL にテーブルが存在しない場合にのみテーブルを作成する方法

PostgreSQL にテーブルが存在しない場合にのみテーブルを作成する方法

Mary-Kate Olsen
リリース: 2024-12-30 15:02:10
オリジナル
369 人が閲覧しました

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

PostgreSQL の「CREATE TABLE IF NOT EXISTS」によるテーブルの作成

テーブルが存在しない場合にのみテーブルを作成する機能は、スクリプトが複数回実行された場合でも、テーブルが 1 回だけ作成されるようにするための便利な機能

MySQL では、この機能は次のステートメントを使用して実装できます。

CREATE TABLE IF NOT EXISTS foo ...;
ログイン後にコピー

PostgreSQL

PostgreSQL バージョン 9.1 以降では、 「CREATE TABLE IF NOT EXISTS」の構文は次のとおりです。サポートされている:

CREATE TABLE IF NOT EXISTS myschema.mytable (i integer);
ログイン後にコピー

古いバージョンの回避策

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$;
ログイン後にコピー

この関数は、テーブルを作成するために複数回呼び出すことができます。

注:

  • 関数 create_mytable() は、テーブルが myschema スキーマ内に作成されることを前提としています。
  • この関数を実行するユーザーにはテーブルを作成するために必要な権限がないため、SECURITY DEFINER 属性を指定する必要がある場合があります。実行が成功したことを確認するために使用されます。

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

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