Existe-t-il une commande permettant de déterminer si une relation donnée est table
ou view
?Commande permettant de distinguer une table d'une vue
La méthode d'essai et d'erreur que je utilise est de faire:
SHOW CREATE VIEW table_name
Si c'est un table
, pas un view
, mon logiciel de base de données (Presto en DBeaver) me donne une erreur:
Relation
table_name
is atable
, not aview
Je suppose que cette erreur provient d'une commande similaire exécutée en interne pour valider ma requête. Si c'est un view
, la commande bien sûr fonctionne.
Si vous utilisez 'SHOW CREATE ..', vous ** ciblez ** un moteur de base de données spécifique - c'est-à-dire non standard SQL –
La méthode standard pour interroger les métadonnées est le [Schéma d'information] (https: // en.wikipedia.org/wiki/Information_schema). Si * votre * système de base de données l'implémente je ne pourrais pas dire. Notez également que, autant que possible, vous * ne devriez pas * distinguer les tables et les vues. Vous devriez être en mesure de remplacer une table avec une vue (et vice versa) et ne pas invalider le code existant. –