Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];

Вниз

Несколко команд SQL в секции Update SQL.   Найти похожие ветки 

 
Patrick   (2003-10-06 19:43) [0]

Подскажите, пожалуйста, кто-нибудь, странная вещь, мне необходимо обновить несколько таблиц в результате изменения одной (с триггерами связываться не хочется), у UpdateSQL в секции Modify у одной (главной) таблицы пытаюсь Execute хранимой процедуры, которая изменяет саму таблицу и дочерние таблицы (просто так эта процедура работает) а вот при вызове метода ApplyUpdates, вылезает Updates failed. Пробовал в секции указывать update сразу нескольких таблиц, что-то не проходит по синтаксису. В MS SQL у меня такие вещи проходили, а вот в Interbase почему то нет.


 
Sergey_Masloff   (2003-10-06 22:56) [1]

Потому что при ApplyUpdates проверяется RowsAffected = 1 если не так то получаешь исключение. При вызове хранимой процедуры ес-сно RowsAffected=0. Лови исключение и гаси его - "и будет всем щасте". Только смотри не погаси лишнего ;-)


 
Patrick   (2003-10-07 16:45) [2]

Кстати хочу отметить, что при возникновении ошибки, изменение всё равно производится.Это всё понятно, и лишний раз подтверждает твои слова, но возможно ли сделать таким образом, чтобы в секции указать несколько операторов update для разных таблиц. Как например в MS SQL begin tran ... end tran?


 
Johnmen   (2003-10-07 17:48) [3]

Общий идеологический подход неверен.
Реализация изменений в таблицах на основе изменений в одной таблице строится на триггерах.
Опять же, идеология функционирования TIBDataSet(или аналогов) конструктивно предполагает изменение только одной записи только в одной таблице, из которой и был получен НД.


 
Sergey_Masloff   (2003-10-07 23:04) [4]

Johnmen © (07.10.03 17:48) [3]
>Общий идеологический подход неверен.
Спорный посыл ;-) Есть такое мнение (и не только мое) ;-))
Лично я для себя давно решил - на триггерах по возможности никакой бизнес логики. Только простые проверки, типа дата в диапазоне и каскадные дела. Вся бизнес-логика в хранимых процедурах. Сколько раз я мысленно благодарил всевышнего что сделал именно так - не пересчитать. Потому что так более гибко, понятно, удобно, надежно - и идеологически верно. Хотя бы потому что на одной таблице могут лежать абсолютно разные бизнес-сущности с ОЧЕНЬ разным поведением, и лепить полуторатысячестрочный триггер для учета всего не есть гуд. В то же время при использовании ХП каждый разработчик напишет нужную логику в своей процедуре и может не задумываться над тем что написано в соседней.


 
Sergey_Masloff   (2003-10-07 23:09) [5]

Johnmen © (07.10.03 17:48) [3]
кстати еще маленький штрих. У нас тут был аудит буржуйский, как раз одной из немногих претензий было - многовато у вас логики на триггерах. Типа, немасштабируемо, ненадежно и вообще моветон.
Такие дела...


 
Johnmen   (2003-10-07 23:30) [6]

>Sergey_Masloff

Дела такие...
>Хотя бы потому что на одной таблице могут лежать абсолютно
>разные бизнес-сущности

Не находишь, что это, по меньшей мере, странно и полностью противоречит концепции построения реляционных БД ?

>каждый разработчик напишет нужную логику в своей процедуре не
>задумываться над тем что написано в соседней.

Опять же, весьма странный проект и странные разработчики, которым по-барабану, какая б.-логика уже "навешана" другими ?!

>Потому что так более гибко, понятно, удобно, надежно - и
>идеологически верно.

Могу согласиться, только если БД спроектирована криво...:)
Это же относится и к >>многовато у вас логики на триггерах.

>Типа, немасштабируемо, ненадежно и вообще моветон.

Смею утверждать, что это некомпетентное заявление.

Короче. Стоит почитать соответствующую литературу, написанную корифеями проектирования БД. Уверяю тебя, после прочтения твое мнение о триггерах изменится...:)


 
Zacho   (2003-10-07 23:41) [7]

Кстати, вот решение: вместо TIBQuery использовать TIBDataSet. И все заработает. :)
:-)


 
Sergey_Masloff   (2003-10-08 00:02) [8]

Johnmen © (07.10.03 23:30) [6]
>Короче. Стоит почитать соответствующую литературу, написанную корифеями проектирования БД.

Это теория же ж... А то практика.
И вообще зря ты с шашкой наскочил сразу. Ты ж не знаешь что у нас за система... Могу сказать что схема разработана в середине 90-х и с тех пор кардинально менять ничего не пришлось - все новые вещи ложатся на старую схему. Мне кажется это вполне доказывает правильность подхода к проектированию.

>Опять же, весьма странный проект и странные разработчики, >которым по-барабану, какая б.-логика уже "навешана" другими ?!
Да просто есть базы несколько выходящие за рамки автоматизации склада на 10 работников ;-) При некоторой размерности по определению часть разработчиков не знает о делах других. Может неудачный пример - например договор продажи пачки сигарет и договор продажи нефтяного танкера - это все равно договор продажи. Но бизнес-логика на них несколько разная, так ведь? И, возможно разработчик реализующий подсистему графика взаиморасчетов с верфью мало знает о процессах доставки табака? Ты предлагаешь делить на разные реляционные сущности эти виды договоров? У кого из классиков это прочитал? ;-) Нет, отношение одно - договор купли продажи. И его разная интерпретация различными подсистемами. В полном соответствии с Дейтом например ;-)

Вобщем, про кривость системы не надо, если хочешь черкни мне в мыло я тебе расскажу может про нашу чего (если будет интересно), ты мне про свою, а то тут это будет выглядеть как мерянье очередное.


 
Johnmen   (2003-10-08 00:36) [9]

>Sergey_Masloff (08.10.03 00:02)

>...зря ты с шашкой наскочил сразу

Ни в коем случае !!! Никогда ни на кого и ни на что не наскакиваю ! Тем более с шашкой...

>Ты ж не знаешь что у нас за система...

Естественно, не знаю. Высказывался из общих теоретических (и практических) соображений. И не только моих.

>а то тут это будет выглядеть как мерянье очередное.

Да не собирался я меряться ! :)

Но все равно остается чувство, что БД спроектирована не вполне корректно...
Мне все интересно, что относится к БД. Но времени на глубокое погружение в чужие системы просто нет ;-)


 
Sergey_Masloff   (2003-10-08 22:28) [10]

Johnmen © (08.10.03 00:36) [9]
>Но времени на глубокое погружение в чужие системы просто нет ;-)
Понятно. Если появится все же писни (напиши в смысле). Система реально уникальная, на территории СНГ аналогов нет точно, в мире не знаю ;-) Счет пользователей - на тысячи, причем компьютер для них-основной рабочий инструмент, не то что раз в день курс валют посмотреть ;-)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.012 c
6-98768
Lony
2003-09-05 16:00
2003.10.30
Как проверить, доступен ли определённый сайт в интернете?


3-98503
Кирилл
2003-10-09 13:02
2003.10.30
потерян пароль


14-98788
VictorT
2003-10-09 12:18
2003.10.30
Я выпал в осадок :))


6-98759
Неумеха
2003-09-05 14:28
2003.10.30
Web-страницы через ShellExecute


1-98719
LINK_‡)
2003-10-09 07:16
2003.10.30
ListBox=>Items=>Random=>?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский