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.
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 :
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>
Cette requête garantit que la table existe dans le « nom_schéma » spécifié et exclut les autres schémas.
Une autre approche consiste à convertir le nom de la table en « regclass » :
<code class="language-sql">SELECT 'schema_name.table_name'::regclass;</code>
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!