Мягкое удаление
В информационных системах, как правило, ни в коем случае не надо удалять никакие данные. В смысле так, чтобы совсем DELETE. Скрывать – конечно, но удалять – нет, не надо. Стреляные воробьи из числа менеджеров-постановщиков обязательно предусматривают для каждого типа документов поле "статус" со значениями вроде "активный", "архивный", "убитый" и т. д. Если вы используете Eludia, то хранить такой статус удобно в поле fake, которое есть в каждой таблице, а фильтры на него – в каждом запросе. Поскольку положительные значения соответствуют недозаполненным записям, а нулевое – актуальным, то удалённые записи, как правило, помечаются значением -1, остальные отрицательные числа вы можете использовать по своему вкусу. Пользователи (users) с fake = -1 лишены возможности авторизоваться в системе.
Фильтр fake = 0 выделяет актуальные записи, удалённые – fake = -1, все заполненные – fake IN (0, -1). Поскольку подобные варианты фильтра нужны в очень многих выборках, его формирование внесено в функции API Eludia.pm. При этом используется значение параметра $_REQUEST {fake} Например, процедура
sql_select_all (<<EOS, {fake => 'users'}); SELECT users.* , roles.name FROM users LEFT JOIN roles ON users.id_role = roles.id WHERE 1=1 EOS
вернёт выборку актуальных пользователей при пустом или нулевом $_REQUEST {fake} и выборку всех заполненных пользователей при $_REQUEST {fake} = '0,-1'.