а как оно будет звучать в случае mnesia (естественно, на erlang-е)? а примерно так:
mnesia:dirty_match_object(mnesia:table_info(таблица,wild_pattern)).
ввиду того, что eshell «больно вумный», и выдаст на такой запрос из большой таблицы всего несколько строк, лучше просматривать порционно, записей, например, по десять::
lists:sublist(mnesia:dirty_match_object(mnesia:table_info(таблица,wild_pattern)),1,10). lists:sublist(mnesia:dirty_match_object(mnesia:table_info(Table,wild_pattern)),11,10).и т.д.
краткая расшифровка:
mnesia:table_info(Table,wild_pattern).возвращает шаблон для получения записей для заданной таблицы Table. фактически — это запись (кортеж), в которой первым элементом идёт название самой таблицы, остальные элементы — анонимные переменные '_' в нужном количестве.
mnesia:dirty_match_object(шаблон)это, собственно, и есть поиск по шаблону. а так как полученный с помощью table_info шаблон содержит только анонимные переменные, то, в переводе на sql это означает, что условие where мы не задали (или задали where true (улыбка)), и в результате получим _все_ строки таблицы.
почему dirty? а это чтобы с транзакциями не заморачиваться. зачем, спрашивается, нужна транзакция при выборке данных?
p.s. ежели кто из читателей знает более короткое/элегантное решение — you are welcome.
p.p.s. до встречи через 100000 секунд.
♺ man -erl mnesia lists
Комментариев нет:
Отправить комментарий