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

PostgreSQL で重複のないテーブルを作成するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-01 01:18:10639ブラウズ

How to Create Tables in PostgreSQL without Duplicates?

重複せずに PostgreSQL でテーブルを作成する

MySQL では、「CREATE TABLE IF NOT EXISTS」構文を使用して、生成せずにテーブルを作成できます。すでに存在する場合はエラー。これにより、重複したテーブルを作成せずにスクリプトを複数回実行できるようになります。 PostgreSQL では、この機能はバージョン 9.1 以降で導入されました。

PostgreSQL 9.1 以降

PostgreSQL 9.1 以降では、次の構文を使用してテーブルを作成できます。 :

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 までご連絡ください。