Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/12/2009, 05:07
manzarinaa
 
Fecha de Ingreso: noviembre-2007
Mensajes: 382
Antigüedad: 16 años, 5 meses
Puntos: 16
sobre tablas temporales (saber si existe)

Hola a tod@s!

Os explico desde el desconocimiento, por que la verdad, no acabo de ver la luz con el tema.

Para empezar. He estado buscando el tiempo de "vida" de una tabla temporal. y he encontrado que existe mientras se está ejecutando el script y que existe lo que dure la sesión, en los dos casos mientras no se utilice mysql_free_results().
La verdad es que casi todo lo que he encontrado era referido a SQL SERVER, que no sé hasta que punto es comparable con mysql, por que nunca lo he usado.

Mi caso: El resultado de una búsqueda se me guarda en una tabla temporal, y el resultado se puede acotar, dando a unos enlaces que generan una consulta sobre esta tabla.
Pasa que estos enlaces estas indexados por los buscadores, por lo que si alguien desde un buscador los clicka, al no existir la tabla temporal el resultado se me va a la porra.
Lo que quiero es saber si si existe la tabla temporal, para que si no existe se cree.
En principio es facil IF NOT EXIST CREATE TEMPORALY TABLE, pero antes de adentrarme en generar la tabla quiero saber si la tabla de verdad existe o no (el código no es mio y se me hace en ocasiones insostenible).

la tabla temporal se llama tmp

he probado lo siguiente:

Código PHP:
$prueba="select * from tempdb.NOMBRE_BD.tables where table_name like 'tmp'"
me devuelve:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.tables where table_name like 'tmp'' at line 1 No funciona.

Código PHP:
$prueba="select * from tempdb.NOMBRE_BD where table_name like 'tmp'"
quitando .tables me dice:Table 'tempdb.NOMBRE_BD' doesn't exist
claro...no es el nombre de la tabla.

Código PHP:
$prueba="SHOW FULL TABLES"
esta me devuelve los nombres de las tablas normales, no me dice nada de tmp no se si por que no existe o por que según he leido el tratamiento de las tablas normales no es igual que el de las temporales.

Código PHP:
$prueba="SHOW FULL TABLES LIKE 'NOMBRE_BD.tempdb.tmp'"
esta es en la que más dudo, me devuelve false y no sé si es por que no existe o por que me mira sólo las normales.

Código PHP:
$prueba"SELECT * FROM tmp LIMIT 1, 10"
esta me dice: Table 'NOMBRE_BD.tmp' doesn't exist
Creo que es, por que no me lo está mirando donde se guardan las temporales que según tengo entendido es en tempdb.

Me podeis dar alguna orientación?
Muchas gracias de antemano.