Heim >Datenbank >MySQL-Tutorial >Wie kann ich PostgreSQL-Tabellen sicher und ohne Fehler durch doppelte Tabellen erstellen?

Wie kann ich PostgreSQL-Tabellen sicher und ohne Fehler durch doppelte Tabellen erstellen?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-02 19:57:40275Durchsuche

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

PostgreSQL: Handhabung der Tabellenerstellung mit „CREATE TABLE IF NOT EXISTS“

In PostgreSQL ist die Verwendung von „CREATE TABLE IF NOT EXISTS“ ermöglicht die Erstellung von Tabellen ohne das Risiko einer doppelten Tabellenerstellung. Diese Funktion wurde in PostgreSQL 9.1 eingeführt und erleichtert das Erstellen von Tabellen auf eine Weise, die sicherstellt, dass sie vorhanden sind, ohne manuell auf ihre Anwesenheit prüfen zu müssen.

Syntax für PostgreSQL 9.1 und höher

Um eine Tabelle mit „CREATE TABLE IF NOT EXISTS“ in PostgreSQL 9.1 und späteren Versionen zu erstellen, geben Sie einfach den Befehl als an folgt:

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

Hinweis:Ersetzen Sie „myschema“ und „mytable“ durch die gewünschten Schema- und Tabellennamen.

Problemumgehung für ältere Versionen

Für PostgreSQL-Versionen vor 9.1 kann eine Workaround-Funktion verwendet werden, um eine ähnliche Funktionalität zu erreichen. Erstellen Sie die folgende 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$;

Rufen Sie die Funktion nach Bedarf auf:

SELECT create_mytable();

Hinweise:

  • Die Spalten „schemaname " und "tablename" in "pg_tables" unterscheiden zwischen Groß- und Kleinschreibung.
  • "pg_tables" enthält nur tatsächliche Tabellen, keine zugehörigen Objekte.
  • Erwägen Sie die Verwendung von „SECURITY DEFINER“, wenn die Rolle, die die Funktion ausführt, keine Berechtigungen zum Erstellen von Tabellen hat.

Das obige ist der detaillierte Inhalt vonWie kann ich PostgreSQL-Tabellen sicher und ohne Fehler durch doppelte Tabellen erstellen?. 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