Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich Tabellen in PostgreSQL mit „IF NOT EXISTS'?

Wie erstelle ich Tabellen in PostgreSQL mit „IF NOT EXISTS'?

Barbara Streisand
Barbara StreisandOriginal
2025-01-04 09:43:40372Durchsuche

How to Create Tables in PostgreSQL Using

So erstellen Sie Tabellen mit der „IF NOT EXISTS“-Klausel von PostgreSQL

MySQL ermöglicht Benutzern das Erstellen von Tabellen mit der „IF NOT EXISTS“-Klausel , um sicherzustellen, dass die Tabelle nur erstellt wird, wenn sie noch nicht vorhanden ist. Dies verhindert Fehler, wenn das Skript mehrmals ausgeführt wird.

In PostgreSQL wurde diese Funktion in Version 9.1 eingeführt und ermöglicht die Verwendung von:

CREATE TABLE IF NOT EXISTS myschema.mytable (i integer);

Für frühere Versionen von PostgreSQL Folgendes Funktion kann als Workaround verwendet werden:

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$;

Diese Funktion kann beliebig oft aufgerufen werden unter Verwendung von:

SELECT create_mytable();

Hinweise:

  • Bei den Spalten „schemaname“ und „tablename“ in pg_tables wird die Groß-/Kleinschreibung beachtet.
  • pg_tables enthält nur aktuelle Werte Tabellen, sodass der Bezeichner möglicherweise noch von verwandten Objekten belegt ist.
  • Wenn der Benutzer, der die Funktion ausführt, dies tut Wenn Sie nicht über die erforderlichen Berechtigungen zum Erstellen der Tabelle verfügen, kann das Attribut SECURITY DEFINER für die Funktion verwendet werden.

Das obige ist der detaillierte Inhalt vonWie erstelle ich Tabellen in PostgreSQL mit „IF NOT EXISTS'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn