Heim >Datenbank >MySQL-Tutorial >Existiert meine PostgreSQL-Tabelle in einem bestimmten Schema?
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.
Ä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:
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.
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!