Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Estado de las tablas de una base de datos (https://www.clubdelphi.com/foros/showthread.php?t=51316)

dec 12-12-2007 13:00:33

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. ;)

Lepe 12-12-2007 14:05:47

Lástima que no exista "CONTAINING" en MySql (al menos como palabra reservada), eso te quitaría el problema de los prefijos. ¿puedes implementar una UDF?. En Firebird realiza búsquedas case insensitive.

Has puesto todos los nombres de las tablas en minúsculas, no sé si en realidad habría alguna con letras en mayúsculas que incordiara un poco.

Saludos


La franja horaria es GMT +2. Ahora son las 12:54:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi