Ver Mensaje Individual
  #1  
Antiguo 12-12-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Reputación: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Estado de las tablas de una base de datos

Hola pataliebres,

Recurro a vosotros porque me consta que sois unos monstruos. Además os estaré agradecido infinitamente si me echáis una mano, y, cuando no, no preocuparos, no pienso condenaros eternamente al infierno. Bueno. Al tema.

No sé si alguna vez necesitasteis conocer el estado de las tablas de una base de datos MySQL, pero, si es así, seguramente usasteis una consulta similar a esta:

Código SQL [-]
SHOW TABLE STATUS FROM nombre_db;

Para obtener el estado de todas las tablas de la base de datos "nombre_db", o, también acaso algo similar a esta otra consulta SQL:

Código SQL [-]
SHOW TABLE STATUS FROM nombre_db LIKE 'nombre_tabla';

¿Verdad que sí? Ahora bien, ¿hay forma de conseguir el estado de más de una tabla en concreto? He comprobado que podría escribir la consulta SQL tal que así:

Código SQL [-]
SHOW TABLE STATUS FROM nombre_db LIKE '%comodin';

Y funciona. Pero, no es, precisamente, lo que ando buscando, pues, precisamente, estoy tratando de obtener el estado de diferentes tablas, que, pueden variar de "prefijo", pero, cuyo nombre es siempre el mismo. Es decir, puedo tener en una base de datos estas tablas:

Código:
gb_links
gb_posts
gb_terms
links
posts
terms
Como véis, hay seis tablas, las tres primeras tienen el prefijo "gb_" y las otras tres no tienen prefijo alguno. El nombre de las tablas es el mismo, sólo se distinguen en el posible prefijo, pero, suponiendo que algunas no tengan prefijo alguno (lo que es posible) la siguiente consulta no arrojaría los resultados esperados si queremos conseguir el estado de una tabla y no otra:

Código SQL [-]
SHOW TABLE STATUS FROM nombre_db LIKE '%links';

Pero,... creo que me estoy yendo por las ramas. Ahora mismo el asunto está solucionado porque obtengo el estado de las tablas de la base de datos una a una, es decir, de este modo se evitan ambigüedades, pero, mi pregunta es, ¿puedo conseguir el estado de varias tablas en concreto en una sola consulta SQL?

Puedo conseguir el estado de todas las tablas, indicando sólo el nombre de la base de datos, pero, esto no sirve para mis propósitos. Puedo obtener el estado de las tablas una por una, y así el asunto funciona bien, pero, ¿sería posible conformar una consulta SQL que obtuviera el estado de ciertas tablas en concreto?

Yo probé con algo como:

Código SQL [-]
SHOW TABLE STATUS FROM nombre_db LIKE 'links', LIKE 'terms';

Lo que además de parecer una burrada, resulta en un error de sintaxis. También probé con cosas como:

Código SQL [-]
SHOW TABLE STATUS FROM nombre_db LIKE 'links', 'terms';

Pero, ocurre lo mismo: no se respeta la sintaxis. En fin. Tal vez esté comiéndome el coco demasiado, porque, al fin y al cabo no cuesta mucho traer el estado de las nueve tablas implicadas, y, además, estas consultas se hacen sólo una vez en la "vida" del programa.

Por otro lado, ignoro si me estoy perdiendo algo y, efectivamente, puedo comprobar el estado de varias tablas en concreto a la vez. Uff... menudo rollo me ha salido... lo envío... no lo envío... lo envío... lo enviaré, pero, os pido disculpas de antemano.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita