Sabia que pode recuperar informações muito detalhadas sobre uma tabela, campo, índices, relação ou mesmo sobre a estrutura completa da base de dados? Este tipo de informação é sempre muito útil para fins de análise ou introspecção. Evidentemente, poderia usar os comandos depreciados do Pack 4D: _AP Get field infos e _AP Get table info. Outra opção é utilizar o SQL system tables.
Nenhuma delas lhe permite recuperar todas as informações. Então porquê utilizar um plug-in ou SQL quando se pode utilizar um comando 4D? O . EXPORT STRUCTURE retorna a definição completa da estrutura da base de dados numa árvore XML . Este comando existe desde 4D v14 R4.
Por exemplo, com este comando, pode descobrir:
- se uma tabela é revista,
- se um campo é uma chave primária,
- se um gatilho está associado a um campo,
- se uma mesa ou um campo estão expostos no Serviço Móvel 4D.
Fornecemos-lhe três métodos para analisar a árvore XML e para guardar o resultado numa variável Objecto. Depois, pode manipular este objecto com os comandos de objecto 4D para analisar, exibir ou fazer qualquer outra acção que pretenda sobre uma tabela, campo, índice, ou relação.
O código fonte de cada método, bem como a base de dados de exemplo completa (versão 4D v16) está disponível:
Sinta-se à vontade para importar estes comandos na sua base de dados, estão prontos a usar!
Informação sobre tabelas e campos
O . getTablesAndFields O método analisa a árvore XML e recupera a tabela e a informação de campo. O resultado é armazenado numa variável Objecto. Este é um extracto de um objecto em formato JSON que contém a informação sobre o “Table_1“tabela e um dos campos chamados “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" } , {...} ] }
Informação sobre índices
O getIndex O método analisa a árvore XML e recupera a informação do índice. O resultado é armazenado numa variável Objecto. Este é um extracto de um objecto em formato JSON; é possível ver a informação no formato “Index Name” índice do “[Table_1]Champ_Alp” campo:
{ "kind": "regular", "name": "Index Name", "type": "7", "uuid": "42E921F874EF44B4A2A08AD82CA53D91", "field": [ { "name": "Champ_Alp", "uuid": "BC7FE443CAC344F993655D4EDE731D87", "table_name": "Table_1", "table_uuid": "0F8DD65FCF8E4CBB882B2FF15C9C8A12" } ] }
Informação sobre relações
O getRelations O método analisa a árvore XML e recupera a informação da relação. O resultado é também armazenado numa variável Objecto. Este é um extracto da informação da relação entre “[Table_1]ID” e “[Table_2]ID” no 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" } ] }
Substituir comandos depreciados do Pack 4D
Também pode utilizar o EXPORT STRUCTURE para substituir os comandos depreciados do Pack 4D. Fornecemos-lhe dois métodos 4D que foram implementados a fim de responder como o _AP Get field infos e _AP Get table info ordens:
- Get table info: recupera informação sobre uma mesa
- Get field info: recupera informação sobre um campo