Heim >Datenbank >MySQL-Tutorial >Existiert meine PostgreSQL-Tabelle in einem bestimmten Schema?

Existiert meine PostgreSQL-Tabelle in einem bestimmten Schema?

DDD
DDDOriginal
2025-01-22 15:57:10415Durchsuche

Does My PostgreSQL Table Exist in a Specific Schema?

So überprüfen Sie, ob eine Tabelle im angegebenen Firmenschema vorhanden ist

Bei der Verwendung einer PostgreSQL-Datenbank ist es oft notwendig zu prüfen, ob eine Tabelle in einem bestimmten Schema existiert. Diese Validierung ist insbesondere in Fällen von entscheidender Bedeutung, in denen die Tabelle sowohl im öffentlichen Schema als auch im unternehmensspezifischen Schema vorhanden sein kann.

Problemdefinition

Ähnlich der in der Frage beschriebenen Situation kann die Tabelle in verschiedenen „Firmen“-Schemata existieren (z. B. Firma1, Firma2, Firmann) und sollte nur in diesen spezifischen Schemata überprüft werden, was die folgenden Herausforderungen mit sich bringt:

  • Bestimmt, ob die Tabelle im angegebenen Unternehmensschema vorhanden ist, auch wenn sie in anderen Schemata wie „öffentlich“ vorhanden ist.

Lösung: Systemverzeichnis und Direktabfrage

Um dieses Problem effektiv zu lösen, sollten Sie sich nicht auf das Informationsschema verlassen, da es aufgrund von Benutzerberechtigungen möglicherweise nicht genau die Existenz der Tabelle widerspiegelt. Fragen Sie stattdessen direkt die Systemkataloge pg_class und pg_namespace ab, um genaue Ergebnisse zu erhalten. Die folgende Abfrage kann verwendet werden:

<code class="language-sql">SELECT EXISTS (
   SELECT FROM pg_catalog.pg_class c
   JOIN   pg_catalog.pg_namespace n ON n.oid = c.relnamespace
   WHERE  n.nspname = 'schema_name'
   AND    c.relname = 'table_name'
   AND    c.relkind = 'r'    -- only tables
   );</code>

Diese Abfrage stellt sicher, dass die Tabelle im angegebenen „Schemaname“ vorhanden ist, und schließt andere Schemata aus.

Alternative: In Regclass konvertieren

Ein anderer Ansatz besteht darin, den Tabellennamen in „regclass“ umzuwandeln:

<code class="language-sql">SELECT 'schema_name.table_name'::regclass;</code>

Diese Methode löst eine Ausnahme aus, wenn die Tabelle im angegebenen Schema nicht vorhanden ist. Die Behandlung dieser Ausnahme sorgt für die erforderliche Validierung.

Diese überarbeitete Ausgabe behält die ursprüngliche Formatierung und das ursprüngliche Bild bei, während Sätze und Absätze neu formuliert werden, um eine Paraphrasierung zu erreichen, ohne die Kernbedeutung zu ändern.

Das obige ist der detaillierte Inhalt vonExistiert meine PostgreSQL-Tabelle in einem bestimmten Schema?. 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