2010-03-18 18 views
7

Me gustaría agregar atributos personalizados a una tabla MySQL que pueda leer a través de php.Agregar atributos de metadatos a la tabla MySQL

Estos atributos no deben interferir con la tabla en sí; se accede principalmente mediante el código php durante el tiempo de generación de código y estos atributos TIENEN que residir en el propio DB.

Algo similar en concepto a la reflexión .NET.

¿MySQL soporta algo como esto?

Gracias.

Respuesta

5

Cuando CREATE o ALTER una tabla, puede agregar COMMENTS - uno para la tabla como un todo y uno para cada columna. Para recuperar estos comentarios, puede consultar la base de datos INFORMATION_SCHEMA, específicamente las columnas INFORMATION_SCHEMA.COLUMNS.COLUMNS_COMMENT y INFORMATION_SCHEMA.TABLE.TABLE_COMMENTS. INFORMATION_SCHEMA proporciona una gran cantidad de metadatos sobre sus bases de datos, incluidos los datos proporcionados por DESCRIBE declaraciones. Cualquier usuario que tenga acceso de lectura a una cierta tabla o columna puede leer los metadatos respectivos desde INFORMATION_SCHEMA, pero no puede leer los metadatos sobre las tablas para las que no tienen acceso de lectura.

Parece natural almacenar sus metadatos personalizados en INFORMATION_SCHEMA, pero no es tan flexible como podría necesitarlo porque puede almacenar solo un COMMENT por columna. Si esto es restrictivo para su propósito o necesita actualizar los datos regularmente, debe seguir @Dark Falcon y crear una tabla adicional.

1

¿Qué tipo de atributos? Como mencionas el reflejo, supongo que estás tratando de descubrir algo sobre la estructura de la mesa. ¿Se dio cuenta de que los comandos que le informan sobre la estructura de la tabla son SQL y devuelve sus resultados como cualquier otra consulta? Esto le permite procesar de manera programática los resultados de, por ejemplo, DESCRIBE TABLA. Es esto lo que estás buscando?

+0

Quiero agregar mi propia información a la lista que devuelve DESCRIBE TABLE. Mis propios atributos PERSONALIZADOS. – Jack

+0

Largo y corto es más o menos: "No se puede". Mantenga una tabla separada con columnas para table_name, field_name, attribute_name, etc. –

Cuestiones relacionadas