7
votes

Comment puis-je détecter si une table temporaire postgres existe déjà?

J'ai une table appelée testeur em> que j'ai besoin de superposer avec une table temporaire afin de faire des tests. Jusqu'à présent, j'ai réussi à utiliser:

SELECT * FROM pg_catalog.pg_class WHERE relkind = 'r' AND relname = 'tester';

result when temporary table exists:

 relname | relnamespace | reltype | relowner | relam | relfilenode | reltablespace | relpages | reltuples | reltoastrelid | reltoastidxid | relhasindex | relisshared | relkind | relnatts | relchecks | reltriggers | relukeys | relfkeys | relrefs | relhasoids | relhaspkey | relhasrules | relhassubclass | relfrozenxid | relacl | reloptions
---------+--------------+---------+----------+-------+-------------+---------------+----------+-----------+---------------+---------------+-------------+-------------+---------+----------+-----------+-------------+----------+----------+---------+------------+------------+-------------+----------------+--------------+--------+------------
 tester  |         2200 | 1533065 |  1531747 |     0 |     1533063 |             0 |        0 |         0 |       1533067 |             0 | t           | f           | r       |        3 |         0 |           0 |        0 |        0 |       0 | f          | t          | f           | f              |     17654031 |        |
 tester  |      1533088 | 1533065 |  1531747 |     0 |     1533160 |             0 |        0 |         0 |       1533163 |             0 | f           | f           | r       |        3 |         0 |           0 |        0 |        0 |       0 | f          | f          | f           | f              |     17654066 |        |


0 commentaires

4 Réponses :


8
votes

fonction définie par l'utilisateur pour vérifier si la table TEMP existe. XXX

voir ici pour plus de détails


2 commentaires

Cela fonctionne pour moi, merci! Y a-t-il un moyen de glisser la fonction entraîner une requête SQL comme un conditionnel (afin que je puisse éviter de faire une requête supplémentaire dans mon code Java)? À ma connaissance, il n'y a pas - mais je serais intéressé à savoir s'il y avait un moyen.


Essayez SELECT * de My_Table où IFTABLEEXIST (MY_TABLE) Vous pouvez également utiliser un cas



5
votes

Ce que je voudrais faire, c'est seulement créer la table temporaire si elle n'existe pas déjà. xxx


1 commentaires

NOTE "SI N'EST PAS EST INSIST" a été introduit dans PostgreSQL 9.6.



3
votes

Cela fonctionne pour moi:

SELECT EXISTS (
   SELECT 1
   FROM   information_schema.tables 
   WHERE  table_schema like 'pg_temp_%'
   AND table_name=LOWER('table_name')
)


0 commentaires

0
votes

Je ne comprends pas pourquoi vous voudriez "recherche floue" avec comme quand il y a une colonne avec les informations dont nous avons besoin. Peut-être qu'il y a des préoccupations de compatibilité à l'envers que je ne suis pas au courant de.

Voici le même code que ci-dessus, mais en utilisant table_type = 'local temporaire au lieu de comme' pg_temp_% ' xxx


0 commentaires