Maison > base de données > tutoriel mysql > Ma table PostgreSQL existe-t-elle dans un schéma spécifique ?

Ma table PostgreSQL existe-t-elle dans un schéma spécifique ?

DDD
Libérer: 2025-01-22 15:57:10
original
374 Les gens l'ont consulté

Does My PostgreSQL Table Exist in a Specific Schema?

Comment vérifier si une table existe dans le schéma d'entreprise spécifié

Lors de l'utilisation d'une base de données PostgreSQL, il est souvent nécessaire de vérifier si une table existe dans un schéma spécifique. Cette validation devient critique en particulier dans les cas où la table peut exister à la fois dans un schéma public et dans un schéma spécifique à l'entreprise.

Définition du problème

Semblable à la situation décrite dans la question, la table peut exister dans différents schémas « entreprise » (par exemple entreprise1, entreprise2, entreprisenn) et ne doit être vérifiée que dans ces schémas spécifiques, ce qui pose les défis suivants :

  • Détermine si la table existe dans le schéma d'entreprise donné, même si elle existe dans d'autres schémas tels que « public ».

Solution : Répertoire système et requête directe

Pour résoudre efficacement ce problème, évitez de vous fier au schéma d'information car il peut ne pas refléter avec précision l'existence de la table en raison des autorisations de l'utilisateur. Au lieu de cela, interrogez directement les catalogues système pg_class et pg_namespace pour obtenir des résultats précis. La requête suivante peut être utilisée :

<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>
Copier après la connexion

Cette requête garantit que la table existe dans le « nom_schéma » spécifié et exclut les autres schémas.

Alternative : convertir en classe régulière

Une autre approche consiste à convertir le nom de la table en « regclass » :

<code class="language-sql">SELECT 'schema_name.table_name'::regclass;</code>
Copier après la connexion

Cette méthode lèvera une exception si la table n'existe pas dans le schéma spécifié. La gestion de cette exception fournit la validation nécessaire.

Cette sortie révisée conserve la mise en forme et l'image d'origine, tout en reformulant les phrases et les paragraphes pour parvenir à une paraphrase sans changer le sens principal.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal