Věděli jste, že můžete získat velmi podrobné informace o tabulce, poli, indexech, relaci nebo dokonce o celé struktuře databáze? Tento druh informací je vždy velmi užitečný pro účely analýzy nebo introspekce. Samozřejmě můžete použít zastaralé příkazy balíku 4D Pack: _AP Get field infos a _AP Get table info. Další možností je použít příkaz SQL system tables.
Žádný z nich neumožňuje získat všechny informace. Proč tedy používat zásuvný modul nebo SQL, když můžete použít příkaz 4D? Příkaz EXPORT STRUCTURE Příkaz vrátí kompletní definici struktury databáze ve stromu XML . Tento příkaz existuje od 4D v14 R4.
Pomocí tohoto příkazu můžete například zjistit:
- zda je tabulka žurnálovaná,
- zda je pole primárním klíčem,
- zda je s polem spojen spouštěč,
- zda jsou tabulka nebo pole vystaveny ve službě 4D Mobile Service.
Nabízíme vám tři metody pro rozbor stromu XML a uložení výsledku do proměnné Object. S tímto objektem pak můžete manipulovat pomocí objektových příkazů 4D a analyzovat, zobrazit nebo provést jakoukoli jinou akci, kterou chcete s tabulkou, polem, indexem nebo relací provést.
K dispozici je zdrojový kód jednotlivých metod i kompletní ukázková databáze (verze 4D v16):
Neváhejte a importujte tyto příkazy do své databáze, jsou připraveny k použití!
Informace o tabulkách a polích
Příkaz getTablesAndFields analyzuje strom XML a načte informace o tabulkách a polích. Výsledek je uložen do proměnné Object. Jedná se o výpis objektu ve formátu JSON, který obsahuje informace o „Table_1“ tabulce a jednom z polí s názvem „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" } , {...} ] }
Informace o indexech
Na adrese . getIndex metoda analyzuje strom XML a načte informace o indexu. Výsledek je uložen do proměnné Object. Jedná se o výpis objektu ve formátu JSON; informace si můžete prohlédnout na „Index Name“ indexu „[Table_1]Champ_Alp“ pole:
{ "kind": "regular", "name": "Index Name", "type": "7", "uuid": "42E921F874EF44B4A2A08AD82CA53D91", "field": [ { "name": "Champ_Alp", "uuid": "BC7FE443CAC344F993655D4EDE731D87", "table_name": "Table_1", "table_uuid": "0F8DD65FCF8E4CBB882B2FF15C9C8A12" } ] }
Informace o vztazích
. getRelations metoda analyzuje strom XML a načte informace o vztahu. Výsledek je rovněž uložen do proměnné Object. Jedná se o výpis informací o vztahu mezi „[Table_1]ID“ a „[Table_2]ID“ ve formátu 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" } ] }
Nahrazení zastaralých příkazů balíčku 4D Pack
Můžete také použít metodu EXPORT STRUCTURE nahradit zastaralé příkazy balíčku 4D Pack. Nabízíme vám dvě metody 4D, které byly implementovány tak, aby reagovaly jako např. _AP Get field infos a . _AP Get table info příkazy:
- Get table info: načte informace o tabulce
- Get field info: vyhledá informace o poli