ホームページ > データベース > mysql チュートリアル > テーブル重複エラーを発生させずに PostgreSQL テーブルを安全に作成するにはどうすればよいですか?

テーブル重複エラーを発生させずに PostgreSQL テーブルを安全に作成するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-02 19:57:40
オリジナル
275 人が閲覧しました

How Can I Safely Create PostgreSQL Tables Without Duplicate Table Errors?

PostgreSQL: "CREATE TABLE IF NOT EXISTS" によるテーブル作成の処理

PostgreSQL では、"CREATE TABLE IF NOT EXISTS" を使用します。重複したテーブルが作成されるリスクを冒さずにテーブルを作成できます。この機能は PostgreSQL 9.1 で導入され、テーブルの存在を手動で確認することなく、確実にテーブルが存在するように簡単に作成できます。

PostgreSQL 9.1 以降の構文

PostgreSQL 9.1 以降のバージョンで「CREATE TABLE IF NOT EXISTS」を使用してテーブルを作成するには、次のようにします。コマンドを次のように指定します。

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

注: 「myschema」と「mytable」を目的のスキーマ名とテーブル名に置き換えます。

回避策古いバージョン

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」の「」と「テーブル名」は大文字と小文字は区別されます。
  • 「pg_tables」には実際のテーブルのみが含まれ、関連オブジェクトは含まれません。
  • 関数を実行するロールにテーブル作成権限がない場合は、「SECURITY DEFINER」の使用を検討してください。

以上がテーブル重複エラーを発生させずに PostgreSQL テーブルを安全に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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