![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
откат изменений в БД
Александр_2012 © (2014-03-21 15:02:00)Добрый день.
Подскажите как откатить изменения в таблице БД после того, как отработан Post. Правильность заполнения основной таблицы БД проверяется с помощью SQL-запросов, прописанных в отдельной таблице. Но для того чтобы запрос отработал необходимо, чтобы данные были занесены в основную таблицу, т.е. метод Post отработал. Но если обнаружена ошибка в заполнении необходимо откатить изменения. Как это сделать?
Труп Васи Доброго (2014-03-31 10:12:00) [21]
> Эти механизмы следует изучить по документации к используемой
> СУБД.
Золотые слова!!! Отлить в золоте, под стекло и на стену!!!
Автору - выкинуть GUI, стукнуться хорошенько головой об стену, чтобы забыть навсегда слова вроде DBEdit и т.п. НАВСЕГДА запретить прямой доступ юзеров к таблицам, это должно быть в крови. Строить GUI надо так, как будто пользоваться им будут диверсанты, мечтающие испортить БД. Основательно познакомиться с ХП и триггерами, они помогут решить твою проблему. И ещё одно - нормальный человек может обработать мозгом за раз не более 17-20 "информационных объектов" и то это предел, а уровень комфортного восприятия заканчивается на 10 объектах, поэтому выводить на экран более 10 строк данных или более 10 характеристик какого либо объекта бессмысленно, это не воспринимается. Надо группировать различные второстепенные характеристики, убирать их с экрана и отображать только по отдельному нажатию кнопки "подробнее".
clickmaker (2014-03-25 10:26:00) [22]> [35] Игорь Шевченко © (25.03.14 10:18)
валидность, например, еmail или телефонного номера, а также условий типа "если pole1=1, то pole2 должно быть равно только 5" - это какбэ не совсем то же самое, что ссылочная целостность
Игорь Шевченко (2014-03-25 10:18:00) [23]clickmaker © (25.03.14 09:38) [34]
> так это вообще больше не к валидности, а к целостности данных
> относится
Разве эти понятия чем-то существенно отличаются с точки зрения прикладной области ? На мой взгляд - совсем ничем.
clickmaker (2014-03-25 09:38:00) [24]> check- и referential intergity- констрейнтами и триггерами
это уже последний рубеж, если юзеру удалось таки прорваться сквозь всю остальную клиент-серверную валидацию.
а referential intergity - так это вообще больше не к валидности, а к целостности данных относится
Dennis I. Komarov (2014-03-25 09:13:00) [25]
> Проверки валидности данных обычно реализуются check- и referential
> intergity- констрейнтами и триггерами, срабатывающими на
> добавление/изменение записей. Эти механизмы следует изучить
> по документации к используемой СУБД.
:)))
Игорь Шевченко (2014-03-24 21:45:00) [26]Проверки валидности данных обычно реализуются check- и referential intergity- констрейнтами и триггерами, срабатывающими на добавление/изменение записей. Эти механизмы следует изучить по документации к используемой СУБД.
Кщд (2014-03-24 19:19:00) [27]>Александр_2012 (24.03.14 15:14) [25]
ОФОМС?
Dennis I. Komarov (2014-03-24 15:40:00) [28]
> причем условия и количество проверок у нас могут меняться
> 1-2 раза в год. Т.е. нужна возможность легко изменять условия
> проверки. А писать анализатор строковых выражений - это
> очень сложно.
Я сию логику (того же ИНН и пр.) давно в dll вынес,
Dennis I. Komarov (2014-03-24 15:36:00) [29]
> Без выбора БД генерировалась не мною, изменить в основных
> таблицах ничего не могу, а пользоваться надо и для операторов
> создать удобный инструмент.
Так про выбор СУБД вопрос не стоит, только вот программиста к ней в поставке нет
> Я это понимаю, но не могу придумать другого способа реализовать
> множественные проверки (на сегодняшний день порядка 60),
> причем условия и количество проверок у нас могут меняться
> 1-2 раза в год. Т.е. нужна возможность легко изменять условия
> проверки. А писать анализатор строковых выражений - это
> очень сложно.
А не надо придумывать... Все уже давно придумали и даже рассказали.
А если честно, то учебник по PL-SQL в зубы и грызть, грызть, грызть... начиная с самых основ: SELECT, INSERT, DELETE, JOIN, ...
Dennis I. Komarov (2014-03-24 15:31:00) [30]
> Именно необходимы все поля для визуализации. Скажем подробная
> информация об объекте.
Вот не надо только сказки рассказывать... Так прям все поля сразу всех "объектов". Не верю!!!
turbouser (2014-03-24 15:26:00) [31]http://docs.oracle.com/cd/B28359_01/appdev.111/b28843/tdddg_procedures.htm
clickmaker (2014-03-24 15:24:00) [32]> анализатор строковых выражений
если условия не сильно запутанные, то достаточно таблицы вида
Field FieldValue DependentField DependentFieldMin DependentFieldMax
-------------------------------------------------------------------
Pole1 1 Pole2 5 5
Pole1 1 Pole3 10 15
...
Александр_2012 (2014-03-24 15:14:00) [33]Dennis I. Komarov ©
>И кому нужна такая визуализация? Информация должна отображаться когда необходима, а не чтоб было...
Именно необходимы все поля для визуализации. Скажем подробная информация об объекте.
>А тогда и нечего на Оракуль смотреть :)
Без выбора БД генерировалась не мною, изменить в основных таблицах ничего не могу, а пользоваться надо и для операторов создать удобный инструмент.
turbouser © (24.03.14 11:36) [17]
>А что мешает вставлять данные в ХП? Там же и все проверки реализовать
ХП - это что?
Оператор, вводя значения в ячейки вполне может ошибиться, также, как и человек, предоставивший информацию, поэтому при сохранении (в идеале) производится проверка по всем существующим взаимосвязям и при обнаружении ошибки или ошибок запись в БД должна блокироваться с выводом сообщений об ошибках.
Inovet © (24.03.14 13:24) [22]
>Ну и да, не дело писать мусор в базу ради его проверки, даже если и транзакцию постоянно откатывать.
Я это понимаю, но не могу придумать другого способа реализовать множественные проверки (на сегодняшний день порядка 60), причем условия и количество проверок у нас могут меняться 1-2 раза в год. Т.е. нужна возможность легко изменять условия проверки. А писать анализатор строковых выражений - это очень сложно.
Dennis I. Komarov (2014-03-24 14:33:00) [34]
> Да ну нафиг, там же разряд ключуется...
+
и потом, это работа как раз GUI, юзер должен видеть что вводит...
Dennis I. Komarov (2014-03-24 14:29:00) [35]
> хотя с тем же ИНН проверку на сервере сделать не трудно.
Да ну нафиг, там же разряд ключуется...
Inovet (2014-03-24 13:24:00) [36]Ну и да, не дело писать мусор в базу ради его проверки, даже если и транзакцию постоянно откатывать.
Inovet (2014-03-24 13:12:00) [37]> [20] clickmaker © (24.03.14 11:57)
> такие проверки лучше делать на клиенте.
Ну видишь, там сами проверки меняются от случая к случаю, видимо, по каким-то признакам. Наверное, можно хранить выражения, которые с подставленными (в параметрах) значениями выполнять на сервере. Что-то мне кажется, что база эта в стиле таблиц Ексель сделана.
clickmaker (2014-03-24 11:57:00) [38]> если pole1=1, то pole2 должно быть равно только 5
такие проверки лучше делать на клиенте. с выдачей соответствующего ругательства при фэйле, либо ограничением в самом контроле
turbouser (2014-03-24 11:52:00) [39]
> Dennis I. Komarov © (24.03.14 11:43) [18]
Естественно не все проверки (хотя с тем же ИНН проверку на сервере сделать не трудно. Да и потом удобно в запросах скаляркой пользоваться :) )
Но логические (а судя по тому что у автора куча запросов - таки проверяется логика) вполне разумно делать в хранимке.
Dennis I. Komarov (2014-03-24 11:43:00) [40]
> Там же и все проверки реализовать
Не всегда можно (удобно) проверки в ХП делать, Например валидность ИНН.
Да и не БД-шное это дело :) БД должна проверять на предмет валидности своей архитектуры, а не контента