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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-30 15:02:10387ブラウズ

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

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