¿Sabía que puede recuperar información muy detallada sobre una tabla, un campo, unos índices, una relación o incluso sobre la estructura completa de la base de datos? Este tipo de información es siempre muy útil para el análisis o la introspección. Por supuesto, puede utilizar los comandos obsoletos de 4D Pack _AP Get field infos y _AP Get table info. Otra opción es utilizar el comando SQL system tables.
Ninguno de ellos le permite recuperar toda la información. Entonces, ¿por qué utilizar un plug-in o SQL cuando podría utilizar un comando de 4D? El comando EXPORT STRUCTURE devuelve la definición completa de la estructura de la base de datos en un árbol XML. Este comando existe desde 4D v14 R4.
Por ejemplo, con este comando se puede averiguar
- si una tabla está registrada en el diario,
- si un campo es una clave primaria,
- si un trigger está asociado a un campo,
- si una tabla o un campo están expuestos en 4D Mobile Service.
Le proporcionamos tres métodos para analizar el árbol XML y guardar el resultado en una variable Object. Luego, puede manipular este objeto con los comandos de objetos de 4D para analizar, mostrar o hacer cualquier otra acción que desee sobre una tabla, campo, índice o relación.
El código fuente de cada método, así como la base de datos de ejemplo completa (versión 4D v16) están disponibles:
Siéntase libre de importar estos comandos en su base de datos, ¡están listos para ser usados!
Información sobre tablas y campos
El método getTablesAndFields analiza el árbol XML y recupera la información de las tablas y los campos. El resultado se almacena en una variable Object. Se trata de un extracto de un objeto en formato JSON que contiene la información de la tabla «Table_1» y uno de los campos denominados «ID«:
{ "id": "1", "leave_tag_on_delete": "true", "name": "Table_1", "uuid": "0F8DD65FCF8E4CBB882B2FF15C9C8A12", "trigger_insert": "true", "comment": "Comments on my Table_1", "displayable_fields_count": "14", "color": {"alpha":"0","blue":"255","green":"255","red": "255"}, "coordinates": {"height":"355","left":"62","top":"70", "width":"152"}, "Field": [ { "autosequence": "true", "id": "1", "name": "ID", "not_null": "true", "type": "4", "unique": "true", "uuid": "1DC7531F29684D699D9FE9686AB71009", "index_ref": [ { "uuid": "7260EA8E18A1477A90F068F70754C384" } ], "pk": "true" } , {...} ] }
Información sobre los índices
El método getIndex analiza el árbol XML y recupera la información del índice. El resultado se almacena en una variable Object. Se trata de un extracto de un objeto en formato JSON; se puede ver la información del índice «Index Name» del campo «[Table_1]Champ_Alp«:
{ "kind": "regular", "name": "Index Name", "type": "7", "uuid": "42E921F874EF44B4A2A08AD82CA53D91", "field": [ { "name": "Champ_Alp", "uuid": "BC7FE443CAC344F993655D4EDE731D87", "table_name": "Table_1", "table_uuid": "0F8DD65FCF8E4CBB882B2FF15C9C8A12" } ] }
Información sobre las relaciones
El método getRelations analiza el árbol XML y recupera la información de la relación. El resultado también se almacena en una variable Object. Se trata de un extracto de la información de la relación entre «[Table_1]ID» y «[Table_2]ID» en formato JSON:
{ "auto_load_1toN": "false", "auto_load_Nto1": "true", "name_1toN": "Link_1_return", "name_Nto1": "Link_1", "uuid": "370180DABD8545D690CDC79E15D31215", "choice_field": "0", "entry_autofill": "false", "entry_create": "false", "entry_wildchar": "false", "color": {"alpha":"0","blue":"255","green":"255","red":"255"}, "related_field": [ { "kind": "source", "name": "ID", "uuid": "1DC7531F29684D699D9FE9686AB71009", "table_name": "Table_1", "table_uuid": "0F8DD65FCF8E4CBB882B2FF15C9C8A12" } , { "kind": "destination", "name": "ID", "uuid": "B71D191358954A5783210E2447CD1A27", "table_name": "Table_2", "table_uuid": "6E23C70A973743B28809D9C3F3CC9060" } ] }
Reemplazar los comandos obsoletos de 4D Pack
También puede utilizar el comando EXPORT STRUCTURE para reemplazar los comandos obsoletos de 4D Pack. Le proporcionamos dos métodos 4D que han sido implementados para responder como el _AP Get field infos y _AP Get table info y los comandos:
- Get table info: recupera información sobre una tabla
- Get field info: recupera información sobre un campo