2010-08-20 17 views
5

Estoy tratando de recuperar programáticamente el comentario para una tabla MySQL. El primer método que me sugirieron fue:¿Cuál es la forma más elegante de recuperar un comentario de la tabla MySQL?

$shown = $db->query('show create table ' . TABLE_NAME)->fetch_row(); 
preg_match("/COMMENT='(.*)'/", $shown[0], $m); 
$comment = $m[1]; 

Pero ese tipo de solución me hace temblar. Me topé con otra forma:

$result = $db->query("select table_comment from information_schema.tables where table_schema = '" . 
    DATABASE_NAME . "' and table_name = '" TABLE_NAME '\'')->fetch_row(); 
$comment = $result[0]; 

Es un poco mejor (sin análisis de cadenas), pero todavía me hace incómodo porque estoy cavando en las estructuras internas, donde no me siento que pertenezco.

¿Hay alguna manera agradable y sencilla de llegar al comentario de la tabla en el código?

Respuesta

3

El esquema de información no es realmente una estructura interna a la que no perteneces. Es parte del estándar ANSI SQL y su propósito es brindarle una forma legítima de consultar los metadatos.

No dudaría en usarlo.

La única desventaja es que la implementación del esquema de información de MySQL tiende a tener bastante poor performance. Por lo tanto, tenga cuidado al ejecutar consultas contra IS en rutinas que deberían ser rápidas.

+0

Genial, no sabía que en realidad era parte de un estándar. Aún así, por lo general trato de mantenerme alejado de cosas que parecen demasiado "meta" si puedo evitarlo ... tienden a darme dolores de cabeza (como el problema de rendimiento que vinculó). – zildjohn01

+0

Dado que ha escrito el código para ambas soluciones, lo aliento a que las comparta y vea cuál es la diferencia en el rendimiento, y si esa diferencia es tolerable para su aplicación. –

Cuestiones relacionadas