Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich Tabellen in PostgreSQL ohne Duplikate?

Wie erstelle ich Tabellen in PostgreSQL ohne Duplikate?

DDD
DDDOriginal
2025-01-01 01:18:10647Durchsuche

How to Create Tables in PostgreSQL without Duplicates?

Erstellen von Tabellen in PostgreSQL ohne Duplizierung

In MySQL können Sie mit der Syntax „CREATE TABLE IF NOT EXISTS“ eine Tabelle ohne Generierung erstellen ein Fehler, wenn er bereits vorhanden ist. Dadurch wird sichergestellt, dass das Skript mehrmals ausgeführt werden kann, ohne dass doppelte Tabellen erstellt werden. In PostgreSQL wurde diese Funktion ab Version 9.1 eingeführt.

PostgreSQL 9.1 und höher

Für PostgreSQL 9.1 und höher können Sie die folgende Syntax verwenden, um eine Tabelle zu erstellen :

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

PostgreSQL-Versionen vor 9.1

Für frühere Versionen von PostgreSQL gibt es einen Workaround mit einer Funktion:

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

Sie können die Funktion dann wie folgt aufrufen:

SELECT create_mytable();

Hinweise:

  • Stellen Sie sicher, dass Ihre Syntax der Groß-/Kleinschreibung des entspricht Schema und Name der Tabelle.
  • Denken Sie daran, dass pg_tables nur tatsächliche Tabellen enthält, daher ist es möglich, dass der Bezeichner von anderen Objekten belegt wird.
  • Wenn der Rolle, die die Funktion ausführt, die erforderlichen Berechtigungen zur Tabellenerstellung fehlen , erwägen Sie die Gewährung dieser Berechtigungen mithilfe der SECURITY DEFINER-Klausel.

Das obige ist der detaillierte Inhalt vonWie erstelle ich Tabellen in PostgreSQL ohne Duplikate?. 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